题解 | #重建二叉树#
重建二叉树
http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6
import java.util.*; import java.util.Arrays; /**
- Definition for binary tree
- public class TreeNode {
-
int val;
-
TreeNode left;
-
TreeNode right;
-
TreeNode(int x) { val = x; }
- } */
public class Solution {
public TreeNode reConstructBinaryTree(int [] pre,int [] vin) {
if(pre.length == 0 && vin.length == 0){
return null;
}
//头节点
TreeNode pRoot = new TreeNode(pre[0]);
//递归解决
for(int i = 0; i < vin.length; i++){
if(pre[0] == vin[i]){
pRoot.left = reConstructBinaryTree(Arrays.copyOfRange(pre, 1, i + 1), Arrays.copyOfRange(vin, 0, i));
pRoot.right = reConstructBinaryTree(Arrays.copyOfRange(pre, i + 1, vin.length), Arrays.copyOfRange(vin, i + 1, vin.length));
}
}
return pRoot;
}
}