Maximum Depth of Binary Tree

LeetCode 104 · View on LeetCode

Classic recursive DFS. The depth of a tree is 1 + the maximum depth of its subtrees. Base case: an empty node has depth 0.

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def max_depth(root: TreeNode | None) -> int:
    if not root:
        return 0
    return 1 + max(max_depth(root.left), max_depth(root.right))

if __name__ == '__main__':
    tree1 = TreeNode(3, TreeNode(9), TreeNode(20, TreeNode(15), TreeNode(7)))
    print(max_depth(tree1))  # 3

    tree2 = TreeNode(1, None, TreeNode(2))
    print(max_depth(tree2))  # 2

    print(max_depth(None))  # 0
© 2026 ByteLearn.dev. Free courses for developers. · Privacy