递归写法
import java.util.*;
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
private static int index = 0;
private TreeNode reConstructBinaryTree(int [] pre,int [] vin, int left, int right) {
if (index == pre.length) return null;
if (left > right) return null;
for (int i = left; i <= right; i ++ ) {
if (pre[index] == vin[i]) {
TreeNode newNode = new TreeNode(pre[index ++ ]);
newNode.left = reConstructBinaryTree(pre, vin, left, i);
newNode.right = reConstructBinaryTree(pre, vin, i + 1 , right);
return newNode;
}
}
return null;
}
public TreeNode reConstructBinaryTree(int [] pre,int [] vin) {
int len = pre.length;
return reConstructBinaryTree(pre, vin, 0, pre.length - 1);
}
}