Given two integer arrays preorder and inorder
where preorder is the preorder traversal of a binary tree and inorder is the inorder traversal of the same tree,
construct and return the binary tree.
특정 트리의 preorder 순회와 inorder 순회의 결과를 담은 두 배열이 주어진다. 이 둘에 다 해당되는 특정한 트리를 리턴하시오.
Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
위 예시로 풀이를 해 볼수 있다.
class Solution:
def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
self.current_index = 0
self.tree = None
def create_tree(tree_node: TreeNode, inorder_list: List[int]):
if len(inorder_list) == 0:
return
tree_node = TreeNode(preorder[self.current_index], None, None)
self.current_index += 1
tree_node.left = create_tree(tree_node.left, inorder_list[:inorder_list.index(tree_node.val)])
tree_node.right = create_tree(tree_node.right, inorder_list[inorder_list.index(tree_node.val) + 1:])
return tree_node
self.tree = create_tree(self.tree, inorder)
return self.tree