← Trees

Drill #38 — Preorder traversal

Easy Visit -> L -> R Trees

In plain English: Visit every node in a binary tree in root-left-right order.

Preorder visits the root first — useful for copying or serializing a tree since you see each node before its children.

Prompt

Return the preorder traversal of a binary tree as a list.

Try to write it from scratch before scrolling down.

Solution

def preorder(node, result=None):
    # visit first, then children
    if result is None:
        result = []
    if node:
        result.append(node.val)
        preorder(node.left, result)
        preorder(node.right, result)
    return result

# BST [4,2,6,1,3] preorder => [4,2,1,3,6]
O(n) time · O(h) space

Related Micro Drills

← Drill #37 Drill #39 →