美文网首页数据结构
Construct Binary Tree from Preor

Construct Binary Tree from Preor

作者: Frank_Kivi | 来源:发表于2017-09-15 08:34 被阅读2次

    问题

    Given preorder and inorder traversal of a tree, construct the binary tree.
    ** Notice
    You may assume that duplicates do not exist in the tree.

    Have you met this question in a real interview? Yes

    ExampleGiven in-order [1,2,3]
    and pre-order [2,1,3]
    , return a tree:

    分析

    以这个二叉树为例,前序是1245367,中序是4251637。我们知道前序的第一个一定是根结点。所以先把1找出来,然后在中序里边找到1,那么1左边的一定是1的左子树,1右边的一定是1的右子树,然后递归即可。里边需要使用到前序,中序和后序的知识,大家自行查阅资料学习。

    代码

    /**
     * Definition of TreeNode:
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left, right;
     *     public TreeNode(int val) {
     *         this.val = val;
     *         this.left = this.right = null;
     *     }
     * }
     */
    public class Solution {
        /**
         *@param preorder : A list of integers that preorder traversal of a tree
         *@param inorder : A list of integers that inorder traversal of a tree
         *@return : Root of a tree
         */
        public TreeNode buildTree(int[] preorder, int[] inorder) {
            // write your code here
            return buildTree(preorder,0,preorder.length-1,inorder,0,inorder.length-1);
        }
        private TreeNode buildTree(int[] preorder,int pleft,int pright, int[] inorder,int ileft,int iright){
            if(pleft>pright||ileft>iright){
                return null;
            }
            int i=preorder[pleft];
            TreeNode node=new TreeNode(i);
            int index=ileft;
            while(inorder[index]!=i){
                index++;
            }
            int leftLength=index-ileft;
            node.left=buildTree(preorder,pleft+1,pleft+leftLength,inorder,ileft,index-1);
            node.right=buildTree(preorder,pleft+leftLength+1,pright,inorder,index+1,iright);
            return node;
        }
    }
    

    相关文章

      网友评论

        本文标题:Construct Binary Tree from Preor

        本文链接:https://www.haomeiwen.com/subject/bftssxtx.html