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

【树】Construct Binary Tree from Preorder and Inorder Traversal

时间:2016-02-05 11:44:41      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

题目:

Given preorder and inorder traversal of a tree, construct the binary tree.

思路:

线序序列的第一个元素就是树根,然后在中序序列中找到这个元素(由于题目保证没有相同的元素,因此可以唯一找到),中序序列中这个元素的左边就是左子树的中序,右边就是右子树的中序,然后根据刚才中序序列中左右子树的元素个数可以在后序序列中找到左右子树的后序序列,然后递归的求解即可

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {number[]} preorder
 * @param {number[]} inorder
 * @return {TreeNode}
 */
var buildTree = function(preorder, inorder) {
    if(preorder.length==0){
        return null;
    }
    return BuildTree(0,preorder.length-1,0,inorder.length-1,preorder,inorder);
};

function BuildTree(pStart,pEnd,iStart,iEnd,preorder,inorder){
    if(pStart==pEnd){
        return new TreeNode(preorder[pStart]);
    }
    if(pStart>pEnd){
        return null;
    }
    var rootval=preorder[pStart];
    var i=inorder.indexOf(rootval);
    var root=new TreeNode(rootval);
    root.left=BuildTree(pStart+1,pStart+(i-iStart),iStart,i-1,preorder,inorder);
    root.right=BuildTree(pStart+1+(i-iStart),pEnd,i+1,iEnd,preorder,inorder);
    return root;
}

 

【树】Construct Binary Tree from Preorder and Inorder Traversal

标签:

原文地址:http://www.cnblogs.com/shytong/p/5182846.html

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