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:
- The original left child becomes the new root.
- The original root becomes the new right child.
- 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
NeetCode All. Last modified on September 7, 2026