题意:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
思路:简单模拟

public class Solution {
    public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
        TreeNode t=dfs(0,pre.length-1,0,in.length-1,pre,in);
        return t;
    }
    public TreeNode dfs(int l1,int r1,int l2,int r2,int [] pre,int [] in){
        int a=pre[l1],b=0;
        for(int i=l2;i<=r2;i++)
            if(in[i]==a) 
                b=i;

        TreeNode t = new TreeNode(in[b]);
        if(b==l2) {t.left=null;}
        else t.left=dfs(l1+1,l1+(b-l2),l2,b-1,pre,in);
        if(b==r2) t.right=null;
        else t.right=dfs(l1+b-l2+1,r1,b+1,r2,pre,in);
        return t;
    }
}