zoukankan      html  css  js  c++  java
  • 重建二叉树(四)

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

    function reConstructBinaryTree(pre, vin)
    {
       
        if(pre.length==0 || vin.length==0){
            return null;
        }
        
        //前序遍历的第一个节点为根节点
        var root=pre[0];
        
        //找到在中序遍历中 根节点的索引
        var index=vin.indexOf(root);
        
        //根据根节点索引,可以在中序遍历中,将二叉树分为左子树和右子树
        var left=vin.slice(0,index);
        var right=vin.slice(index+1);
        
        var node=new TreeNode(root);
        
        //重建的二叉树的左子树和右子树也可以根据上面的步骤推导出来
        //左子树是根据前序和中序的左子树推导
        //右子树也是根据前序和中序的右子树推导
        
        node.left=reConstructBinaryTree(pre.slice(1,index+1),left);
        node.right=reConstructBinaryTree(pre.slice(index+1),right);
        
        return node;
    }
  • 相关阅读:
    [HAOI2008]下落的圆盘
    10.2 上午 考试
    10.1 考试 ..........
    9.29 考试
    博弈论笔记
    bzoj_1022: [SHOI2008]小约翰的游戏John
    课程总结第十五周
    团队冲刺第二阶段09
    团队冲刺第二阶段08
    对搜狗输入法的评价
  • 原文地址:https://www.cnblogs.com/cmy1996/p/9601125.html
Copyright © 2011-2022 走看看