Construct Binary Tree from Preorder and Inorder Traversal

来源:互联网 发布:网络摄像机ip修改器 编辑:程序博客网 时间:2024/06/06 23:00

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

Note:
You may assume that duplicates do not exist in the tree.

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public TreeNode buildTree(int[] preorder, int[] inorder) {        if(preorder==null && inorder==null) return null;        if(preorder.length<=0 && inorder.length<=0) return null;        return buildCore(preorder,0,preorder.length-1,inorder,0,inorder.length-1);    }    public TreeNode buildCore(int[] preorder,int preBegin,int preEnd,int[] inorder,int inBegin,int inEnd){        int rootVal=preorder[preBegin];        TreeNode node=new TreeNode(rootVal);        if(preBegin==preEnd){            if(inBegin==inEnd){                return node;            }        }                int index;        for(index=inBegin;index<=inEnd;index++){            if(inorder[index]==rootVal) break;        }        if(index>inEnd) return null;        int lenLeft=index-inBegin;                if(lenLeft>0){            node.left=buildCore(preorder,preBegin+1,preBegin+lenLeft,inorder,inBegin,index-1);        }        if(preBegin+lenLeft<preEnd){            node.right=buildCore(preorder,preBegin+lenLeft+1,preEnd,inorder,index+1,inEnd);        }        return node;    }}


0 0
原创粉丝点击