41 lines
1019 B
Java
Executable File
41 lines
1019 B
Java
Executable File
package com.thinker.bishi.offer;
|
|
|
|
|
|
class TreeNode{
|
|
int val;
|
|
TreeNode left;
|
|
TreeNode right;
|
|
TreeNode(int x){ val = x;}
|
|
}
|
|
|
|
public class ReconstructBinaryTree{
|
|
|
|
public static TreeNode reConstructBinaryTree(int [] pre,int [] in) {
|
|
TreeNode root=reConstructBinaryTree(pre,0,pre.length-1,in,0,in.length-1);
|
|
return root;
|
|
}
|
|
|
|
private static TreeNode reConstructBinaryTree(int [] pre,int startPre,int endPre,int [] in,int startIn,int endIn) {
|
|
|
|
if(startPre>endPre||startIn>endIn)
|
|
return null;
|
|
TreeNode root=new TreeNode(pre[startPre]);
|
|
|
|
for(int i=startIn;i<=endIn;i++){
|
|
if(in[i]==pre[startPre]){
|
|
root.left=reConstructBinaryTree(pre,startPre+1,startPre+i-startIn,in,startIn,i-1);
|
|
root.right=reConstructBinaryTree(pre,i-startIn+startPre+1,endPre,in,i+1,endIn);
|
|
}
|
|
}
|
|
return root;
|
|
}
|
|
|
|
public static void main(String[] args){
|
|
int[] pre = new int[]{1,2,4,7,3,5,6,8};
|
|
int[] in = new int[]{4,7,2,1,5,3,8,6};
|
|
TreeNode result = reConstructBinaryTree(pre,in);
|
|
System.out.println(result);
|
|
}
|
|
|
|
}
|