def preorderTraversal(root: Optional[TreeNode]) -> List[int]:
def helper(root):
if not root:
return([])
return([root.val] + helper(root.left) + helper(root.right)) # val, left, right
return(helper(root))
def inorderTraversal(root: Optional[TreeNode]) -> List[int]:
def helper(root):
if not root:
return([])
return(helper(root.left) + [root.val] + helper(root.right)) # left, val, right
return(helper(root))
def postorderTraversal(root: Optional[TreeNode]) -> List[int]:
def helper(root):
if not root:
return([])
return(helper(root.left) + helper(root.right) + [root.val]) # left, right, val
return(helper(root))