class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
return buildTree(preorder, 0, preorder.length - 1,
inorder, 0, inorder.length - 1);
}
public TreeNode buildTree(int[] preorder, int preStart, int preEnd,
int[] inorder, int inStart, int inEnd){
if(preStart > preEnd){
return null;
}
//构造根节点
int rootVal = preorder[preStart];
TreeNode root = new TreeNode(rootVal);
int index = -1;
for (int i = inStart; i <= inEnd; i++) {
if(inorder[i] == rootVal){
index = i;
break;
}
}
int leftSize = index - inStart;
root.left = buildTree(preorder, preStart + 1, preStart + leftSize, inorder, inStart, index - 1);
root.right = buildTree(preorder, preStart + leftSize + 1, preEnd, inorder, index + 1, inEnd);
return root;
}
}
leetcode 105
最新推荐文章于 2022-03-28 21:42:34 发布