Problem Statement
Write a function that takes in a binary tree and inverts it.
Sample Input
tree = 1 / \ 2 3 / \ / \ 4 5 6 7 / \ 8 9
Sample Result
tree = 1 / \ 3 2 / \ / \ 7 6 5 4 / \ 9 8
Code #1
def invert_binary_tree(tree): queue = [tree] while len(queue) > 0: cur_node = queue.pop(0) if cur_node is not None: cur_node.left, cur_node.right = cur_node.right, cur_node.left queue.append(cur_node.left) queue.append(cur_node.right) return tree # This is the class of the input binary tree. class BinaryTree: def __init__(self, value): self.value = value self.left = None self.right = None
Notes
- Invert the root node of the tree first.
- Invert = swap the left child with the right child.
- Continue swapping the childs of the subsequent node.
- Perform breadth-first traversal.
- Utilize queue to perform the traversal iteratively.
Credits
- Algoexpert for the problem statement.
- Tomas Robertson for the cover image (https://unsplash.com/photos/wAKld_0lcmA).
Top comments (2)
Additionally, a recursive solution, tested at leetcode.com/problems/invert-binar...
Thanks for contributing the recursive approach!