← Tree Traversal

Micro-Drill #208 — Subtree of another tree

Tree Traversal Target: 15s

At each node in root, check if it's the same tree as subRoot. O(m*n) brute force.

def isSubtree(root, subRoot):
    if not root: return False
    if isSameTree(root, subRoot): return True
    return (isSubtree(root.left, subRoot) or
            isSubtree(root.right, subRoot))

def isSameTree(p, q):
    if not p and not q: return True
    if not p or not q: return False
    return (p.val == q.val and
            isSameTree(p.left, q.left) and
            isSameTree(p.right, q.right))

Type it from memory. Go.

Practice Problems

Related Coding Drills

← Micro #207 Micro #209 →