题目
题解
class Solution {
int[] p;
Map<Integer, Integer> map = new HashMap<>();
public TreeNode buildTree(int[] preorder, int[] inorder) {
p = preorder;
for (int i = 0;i < inorder.length;i++) {
map.put(inorder[i], i);
}
return fun(0, 0, preorder.length - 1);
}
public TreeNode fun(int root, int left, int right) {
if (left > right) {
return null;
}
TreeNode rootNode = new TreeNode(p[root]);
int inroot = map.get(p[root]);
int leftSize = inroot - left;
rootNode.left = fun(root + 1, left, inroot - 1);
rootNode.right = fun(root + leftSize + 1, inroot + 1, right);
return rootNode;
}
}