Scribbling

LeetCode: 106. Construct Binary Tree from Inorder and Postorder Traversal 본문

Computer Science/Coding Test

LeetCode: 106. Construct Binary Tree from Inorder and Postorder Traversal

focalpoint 2021. 10. 21. 22:17
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def buildTree(self, inorder: List[int], postorder: List[int]) -> Optional[TreeNode]:
        return self.builder(inorder, postorder)
        
    def builder(self, inorder, postorder):
        if not inorder:
            return None
        
        head = TreeNode(val=postorder[-1])
        
        boundary = inorder.index(head.val)
        left_inorder = inorder[:boundary]
        right_inorder = inorder[boundary+1:]
        
        left_postorder = postorder[:boundary]
        right_postorder = postorder[boundary:-1]
        
        head.left = self.builder(left_inorder, left_postorder)
        head.right = self.builder(right_inorder, right_postorder)
        return head