解题思路 :
具体代码实现 :
class Solution {
public int i;
public TreeNode buildTree(int[] preorder, int[] inorder) {
TreeNode root = buildTreechild(preorder,inorder,0,inorder.length - 1);
return root;
}
public TreeNode buildTreechild(int[] preorder, int[] inorder, int inbegin, int inend) {
if (inbegin > inend) {
return null;
}
TreeNode root = new TreeNode(preorder[i]);
int rootIndex = findindex(preorder,inorder);
if (rootIndex == -1) {
return null;
}
i++;
root.left = buildTreechild(preorder,inorder,inbegin,rootIndex - 1);
root.right = buildTreechild(preorder,inorder,rootIndex + 1,inend);
return root;
}
private int findindex(int[] preorder, int[] inorder) {
int val = preorder[i];
for (int j = 0; j < inorder.length; j++) {
if (inorder[j] == val) {
return j;
}
}
return -1;
}
}
有问题可以私信我~~