题目来源:
https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
题目描述:
代码如下:
class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
return buildTree(preorder, inorder, 0, preorder.length - 1, 0, inorder.length - 1);
}
private TreeNode buildTree(int[] preorder, int[] inorder, int prestart, int preend, int instart, int inend) {
if (prestart == preorder.length) {
return null;
}
TreeNode root = new TreeNode(preorder[prestart]);
if (prestart == preend) {
return root;
}
for (int index = inend; index >= instart; index--) {
if (preorder[prestart] == inorder[index]) {
int length = index - instart;
root.left = buildTree(preorder, inorder, prestart + 1, prestart + length, instart, index - 1);
root.right = buildTree(preorder, inorder, prestart + length + 1, preend, index + 1, inend);
return root;
}
}
return null;
}
}