题目描述:给定二叉树的先序与中序遍历,重建二叉树。
解题思路:二叉树先序遍历的第一个结点是根节点,找到其在中序遍历里的位置,二分。
public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
return reConstructBinaryTree(pre,0,in,0,in.length);
}
public TreeNode reConstructBinaryTree(int[] pre, int preIndex, int[] in, int start, int end){
if(preIndex >= pre.length || start == end) return null;
TreeNode root = new TreeNode(pre[preIndex]);
for(int i = start; i < end; i++){
if(pre[preIndex] == in[i]){
root.left = reConstructBinaryTree(pre, preIndex + 1, in, start, i);
root.right = reConstructBinaryTree(pre, preIndex + i - start + 1, in, i + 1, end);
}
}
return root;
}