如何遍历一棵树
有两种通用的遍历树的策略:
宽度优先搜索(BFS)
我们按照高度顺序一层一层的访问整棵树,高层次的节点将会比低层次的节点先被访问到。
深度优先搜索(DFS)
在这个策略中,我们采用深度作为优先级,以便从跟开始一直到达某个确定的叶子,然后再返回根到达另一个分支。
深度优先搜索策略又可以根据根节点、左孩子和右孩子的相对顺序被细分为前序遍历,中序遍历和后序遍历。
public class Solution{
private int preIndex=0;
private int[] preOrder;
private int[] inOrder;
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
publice TreeNode bulidTree(in[] preOrder,int[] inOrder){
this.preOrder=preOrder;
this.inOrder=inOrder;
int idx=0;
for(Integer s:inOrder){
map.put(s,idx++);
}
}
private TreeNode helper(Int left,int right){
if(left==right){
return null;
}
int index=0;
int root_Val=preOrder[preIndex];
int index=map.get(root_val);
TreeNode root=new TreeNode(root_val);
root.left=helper(left,index);
root.right=helper(Index+1,right);
return root;
}
}