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

剑指offer--4.重建二叉树

时间:2019-04-18 21:43:12      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:nod   null   中序   前序遍历   左右   重建二叉树   nbsp   str   div   

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

思路:1. 前序遍历首位是根节点,找到根节点之后,根据中序遍历找到左右子树

           2. 把找到的根节点从pre里删除,分别找到1中的左右子树, preleft preright vinleft vinright

   3. 然后左右子树带入1中

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function reConstructBinaryTree(pre, vin)
{
    var result = null;
    if(pre.length>1) {
        var root= pre[0];
        var vinrootindex = vin.indexOf(root);
        var vinleft = vin.slice(0,vinrootindex);
        var vinright = vin.slice(vinrootindex+1,vin.length);
        pre.shift();
        var preleft = pre.slice(0,vinleft.length);
        var preright = pre.slice(vinleft.length,pre.length);
        result = {
            val : root,
            left : reConstructBinaryTree(preleft,vinleft),
            right : reConstructBinaryTree(preright,vinright)
        }
    }
    else if(pre.length===1) {
        result={
            val: pre[0],
            left: null,
            right: null
        }
    }
    
    return result;
}

 

剑指offer--4.重建二叉树

标签:nod   null   中序   前序遍历   左右   重建二叉树   nbsp   str   div   

原文地址:https://www.cnblogs.com/sarah-wen/p/10732513.html

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