重建二叉树
思路
先找出根节点,然后利用递归方法构造二叉树
代码
import java.util.Arrays;
public class Solution {
public TreeNode reConstructBinaryTree(int [] pre,int [] vin) {
if (pre == null || vin == null) {
return null;
}
if (pre.length == 0 || vin.length == 0) {
return null;
}
if (pre.length != vin.length) {
return null;
}
TreeNode root = new TreeNode(pre[0]);
for (int i = 0; i < vin.length; i++) {
if (vin[i] == pre[0]) {
root.left = reConstructBinaryTree(
Arrays.copyOfRange(pre, 1, i + 1),
Arrays.copyOfRange(vin, 0, i));
root.right = reConstructBinaryTree(
Arrays.copyOfRange(pre, i + 1, pre.length),
Arrays.copyOfRange(vin, i + 1, vin.length));
}
}
return root;
}
}
|