public class Solution{
public BinaryTreeNode ConstructBinaryTree(int[] preorder,int[] inorder){
BinaryTreeNode root=new BinaryTreeNode();
if(preorder.length==0) return root;
return Construct(preorder,inorder,0,preorder.length-1,0,inorder.length-1);
}
public BinaryTreeNode Construct(int[] preorder,int[] inorder,int pre_start,int pre_end,int in_start,int in_end){
BinaryTreeNode root=new BinaryTreeNode();
if(pre_start>pre_end){
return null;
}
else if(pre_start==pre_end){
root.val=preorder[pre_start];
return root;
}
else{
root.val=preorder[pre_start];
int middle=0;
for(int i=in_start;i<=in_end;i++){
if(inorder[i]==root.val){
middle=i;
break;
}
}
root.left=Construct(preorder,inorder,pre_start+1,pre_start+middle-in_start,in_start,middle-1);
root.right=Construct(preorder,inorder,pre_start+middle-in_start+1,pre_end,middle+1,in_end);
return root;
}
}
public static void main(String args[]){
int[] preorder={1,2,4,7,3,5,6,8};
int[] inorder={4,7,2,1,5,3,8,6};
Solution sl=new Solution();
sl.ConstructBinaryTree(preorder,inorder);
}
}
6、重建二叉树
最新推荐文章于 2022-03-07 18:59:14 发布