如何遍历一棵树
有两种通用的遍历树的策略:
宽度优先搜索(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; } }