Skip to main content
LeetCode 156, Medium. Topics: Tree, Depth-First Search, Binary Tree. View on LeetCode. Generate this problem as a practice environment: tested reference solution, 14 parametrized pytest cases, and a playground notebook:

Problem

Given the root of a binary tree, turn the tree upside down and return the new root. You can turn a binary tree upside down with the following steps:
  1. The original left child becomes the new root.
  2. The original root becomes the new right child.
  3. The original right child becomes the new left child.
The mentioned steps are done level by level. It is guaranteed that every right node has a sibling (a left node that shares the same parent) and has no children.

Examples

Constraints

  • The number of nodes in the tree is in the range [0, 10]
  • 1 <= Node.val <= 10
  • Every right node in the tree has a sibling (a left node that shares the same parent)
  • Every right node in the tree has no children

Solution

Reference implementation from solution.py on GitHub, full suite in test_solution.py:

Complexity

Tags

NeetCode All.
Last modified on September 7, 2026