package t5;
import java.util.Arrays;
public class Solution {
public static void main(String[] args) {
// 定义前序数列
int[] pre = { 1, 2, 4, 7, 3, 5, 6, 8 };
// 定义中序数列
int[] in = { 4, 7, 2, 1, 5, 3, 8, 6 };
// public TreeNode reConstructBinaryTree(int[] pre, int[] in)
TreeNode tn = new Solution().reConstructBinaryTree(pre, in);
System.out.println(tn.left);
}
// Definition for binary tree
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
// 构造二叉树的方法
public TreeNode reConstructBinaryTree(int[] pre, int[] in) {
if (pre.length == 0 || in.length == 0) {
return null;
}
TreeNode node = new TreeNode(pre[0]);
for (int i = 0; i < in.length; i++) {
if (pre[0] == in[i]) {
node.left = reConstructBinaryTree(Arrays.copyOfRange(pre, 1, i + 1), Arrays.copyOfRange(in, 0, i));
node.right = reConstructBinaryTree(Arrays.copyOfRange(pre, i + 1, pre.length),
Arrays.copyOfRange(in, i + 1, in.length));
}
}
return node;
}
}