Binary Tree Preorder Traversal

Problem Summary

Approach Taken

Main Concepts Used

Time & Space Complexity

Recursive Code

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

            output.append(root.val)
            traverse(root.left)
            traverse(root.right)

        output = []
        traverse(root)
        return output

Iterative Code

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

        order = [root]
        output = []

        while order:
            current = order.pop()
            output.append(current.val)
            if current.right:
                order.append(current.right)
            if current.left:
                order.append(current.left)
        return output

Common mistakes