Binary Tree Postorder Traversal

Problem Summary

Why This Works

Main Concepts Used

(Mark the CS concepts or algorithms used.)

Time & Space Complexity

Recursive Code

class Solution:
    def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
	    result = []
        def dfs(root):
	        if not root:
		        return
		    dfs(root.left)
		    dfs(root.right)
		    result.append(root.val)
		dfs(root)
		return result

Iterative Code

class Solution:
    def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        if not root:
            return []

        stack = [root]
        result = []
        while stack:
            node = stack.pop()
            if node:
                result.append(node.val)
                stack.append(node.left)
                stack.append(node.right)
        result.reverse()
        return result