Level order or Depth order binary tree traversal is a technique used to visit all the nodes of a binary tree layer by layer. First the root node, which is at depth-0, is visited. Next all nodes at depth-1 (distance of 1 from root node) are visited. Next all the nodes at dept-2 are visited and so on. The animated examples discussed in the next section will make the definition more clear.
Animation of Level Order Binary Tree Traversal
Let’s consider the below binary tree and apply the Level order tree traversal technique:
First the root node A
which is at depth 0
has to be visited.
Next all the nodes at depth 1
have to be visited (Nodes B
and C
).
Finally, all the nodes at depth 2
should be visited (Nodes D
, E
, F
and G
).
Iterative Implementation
from collections import deque
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def iterative_level_order_traversal(root):
if root is None:
return
queue = deque()
queue.append(root)
while queue:
node = queue.popleft()
# Print the value or perform any operation
print(node.value, end=" ")
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
# Create a sample binary tree
def create_binary_tree():
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)
return root
# Iterative level-order traversal usage
if __name__ == "__main__":
tree_root = create_binary_tree()
print("Iterative Level-Order Traversal:")
iterative_level_order_traversal(tree_root)