剑指offer:重建二叉树(dfs)

重建二叉树

https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tqId=11157&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tab=answerKey

题意:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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;
    }
}
全部评论

相关推荐

04-28 22:33
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
豆泥🍀:同26届,加油,我也还没找到查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务