package tree;
public class ConstructTree {
/**
* 根据前序和中序数组构造二叉树
* @param args
*/
public static int idx = 0;
public static TreeNode construct(int[] pre,int[] in, int left,int right){
if(left==right) return new TreeNode(pre[idx++]);
TreeNode root = null;
if(left<right){
root = new TreeNode(pre[idx]);
int i=0;
for(;i<=right;i++){
if(pre[idx]==in[i]){
break;
}
}
int newright = i-1;
int newleft = i+1;
idx++;
root.left = construct(pre, in, left, newright);
root.right = construct(pre, in, newleft, right);
}
return root;
}
public static void print(TreeNode root){
if(root==null) return;
System.out.print(root.value+" ");
print(root.left);
print(root.right);
}
public static void main(String[] args) {
int[] pre = {1,2,4,5,3};
int[] in = {4,2,5,1,3};
TreeNode root = construct(pre, in, 0, pre.length-1);
print(root);
}
}
根据前序和中序数组构造二叉树(递归方法)
最新推荐文章于 2023-01-29 13:39:20 发布