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