创建/序列化
public class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
return buildTree(preorder, 0, inorder, 0, inorder.length - 1);
}
private TreeNode buildTree(int[] preorder, int pre_index, int[] inorder, int in_start, int in_end){
if(pre_index >= preorder.length || in_start > in_end) return null;
int rootVal = preorder[pre_index];
int pos = in_start;
while(pos <= in_end && inorder[pos] != rootVal){
pos++;
}
int leftTreeLength = pos - in_start;
TreeNode root = new TreeNode(rootVal);
root.left = buildTree(preorder, pre_index + 1, inorder, in_start, pos - 1);
root.right = buildTree(preorder, pre_index + leftTreeLength + 1, inorder, pos + 1, in_end);
return root;
}
}Serialize and Deserialize Binary Tree
Last updated