leetCode105.#### 从前序与中序遍历序列构造二叉树
今天刷到了这个题,看到了大佬的巧妙思路,记录一下学习过程。
前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
递归真香
1.使用指针p_start和p_end来分别记录前序遍历数组的起始和末位。
2.使用指针i_start和i_end 来分别记录中序遍历数组的起始和末位。
1.终止条件
p_start=p_end,说明已经遍历完子树所有元素
2.递推
根节点索引index
root.left=(pre,start+1,start+子数组的length,in,start,index);
roo.right=(pre,start+子数组的长度length,p_end,in,index+1,i_end);
3.返回值
return root;
public TreeNode buildTree(int[] preoder,int[] inorder){
return buildTree(preoder,0,preoder.length,inorder,0,inorder.length);
}
private TreeNode buildTree(int[] preoder, int p_start, int p_end, int[] inorder, int i_start, int i_end) {
if(p_start==