码迷,mamicode.com
首页 > 其他好文 > 详细

重建二叉树(四)

时间:2018-09-06 22:58:58      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:节点   返回   UNC   二叉树   假设   导出   ||   中序   遍历   

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

 

重建二叉树(四)

标签:节点   返回   UNC   二叉树   假设   导出   ||   中序   遍历   

原文地址:https://www.cnblogs.com/cmy1996/p/9601125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!