DSA Series Chapter 16 – LEVEL ORDER TRAVERSAL(BINARY TREE BFS)(C Version)

   


 [Join Our Blog

DSA Series Chapter 16 – LEVEL ORDER TRAVERSAL(BINARY TREE BFS)(C Version)

Objective of this Post

This post explains Level Order Traversal of a Binary Tree using Breadth First Search (BFS). 

Key focus:

  • Queue-based traversal logic

  • Difference between BFS and DFS

  • Practical understanding with dry run


1. What is Level Order Traversal?

Definition (Exam-Ready)

Level Order Traversal is a traversal technique in which nodes of a binary tree are visited level by level from left to right, starting from the root.

Traversal Category

  • Breadth First Search (BFS)


2. Binary Tree Diagram Used

            1
          /   \
         2     3
        / \
       4   5

3. Traversal Order (Level-wise)

LevelNodes Visited
01
12, 3
24, 5

Final Output

1 2 3 4 5

4. Algorithm (Plain English)

  1. If tree is empty, stop

  2. Create an empty queue

  3. Insert root node into queue

  4. While queue is not empty:

    • Remove front node

    • Visit (print) the node

    • Enqueue left child (if exists)

    • Enqueue right child (if exists)


5. Queue Concept Used

  • FIFO (First In First Out)

  • Ensures level-by-level traversal


6. C Program – Level Order Traversal (Using Queue)

#include <stdio.h>
#include <stdlib.h>

struct Node {
    int data;
    struct Node *left;
    struct Node *right;
};

struct Queue {
    int front, rear;
    int size;
    struct Node **array;
};

struct Node* createNode(int data)
{
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = data;
    newNode->left = NULL;
    newNode->right = NULL;
    return newNode;
}

struct Queue* createQueue(int size)
{
    struct Queue* queue = (struct Queue*)malloc(sizeof(struct Queue));
    queue->front = queue->rear = 0;
    queue->size = size;
    queue->array = (struct Node**)malloc(size * sizeof(struct Node*));
    return queue;
}

int isEmpty(struct Queue* queue)
{
    return queue->front == queue->rear;
}

void enqueue(struct Queue* queue, struct Node* node)
{
    queue->array[queue->rear++] = node;
}

struct Node* dequeue(struct Queue* queue)
{
    return queue->array[queue->front++];
}

void levelOrder(struct Node* root)
{
    if (root == NULL)
        return;

    struct Queue* queue = createQueue(100);
    enqueue(queue, root);

    while (!isEmpty(queue))
    {
        struct Node* temp = dequeue(queue);
        printf("%d ", temp->data);

        if (temp->left != NULL)
            enqueue(queue, temp->left);

        if (temp->right != NULL)
            enqueue(queue, temp->right);
    }
}

int main()
{
    struct Node* root = createNode(1);
    root->left = createNode(2);
    root->right = createNode(3);
    root->left->left = createNode(4);
    root->left->right = createNode(5);

    printf("Level Order Traversal: ");
    levelOrder(root);

    return 0;
}

7. Dry Run (Queue Simulation)

Queue: [1]
Dequeue 1 → print 1 → enqueue 2, 3
Queue: [2, 3]
Dequeue 2 → print 2 → enqueue 4, 5
Queue: [3, 4, 5]
Dequeue 3 → print 3
Queue: [4, 5]
Dequeue 4 → print 4
Queue: [5]
Dequeue 5 → print 5
Queue empty → stop

8. Time and Space Complexity

Time Complexity

  • O(n) — each node is visited once

Space Complexity

  • O(n) — queue may store all nodes of a level


9. Important Applications

  • Printing tree level-wise

  • Finding height of tree

  • Breadth-first search problems


10. Common Exam & Interview Mistakes

  • Using stack instead of queue

  • Forgetting to enqueue child nodes

  • Confusing BFS with DFS traversals


11. Practice Questions

  1. Write level order traversal for a skewed tree.

  2. Explain why queue is mandatory for BFS.

  3. Predict output for a tree with only right children.

  4. Modify level order traversal to print level by level.


ALSO CHECK 

DS(Data Structure) Python&C Edition

DSA Series Chapter 1 Time & Space Complexity ( C Edition)

DSA Series Chapter 2 Arrays  (C Version)


DSA Series Chapter 2 Arrays  (Python Version)

DSA Series Chapter 3 Strings (C Version)


DSA Series Chapter 3 Strings (Python Version)


DSA Series Chapter 4 Linked Lists (Python Version)


DSA Series Chapter 4 Linked Lists (C Version)


DSA Series Chapter 5 Stacks (Python Version)


DSA Series Chapter 5  Stacks  (C Version)




















DSA Series Chapter 13 - Binary Tree traversal, BFS, DFT/DFS, Preorder Traversal In Binary Tree



 

DSA Series Chapter 15 – POSTORDER TRAVERSAL (BINARY TREE)(Python Version)


DSA Series Chapter 15 – POSTORDER TRAVERSAL (BINARY TREE)(C Version)


DSA Series Chapter 16 – LEVEL ORDER TRAVERSAL(BINARY TREE BFS)(C Version)


DSA Series Chapter 16 – LEVEL ORDER TRAVERSAL(BINARY TREE BFS)(Python Version)








Tail Recursion Optimization: How Compilers Convert Recursion Into Iteration


Advanced Recursion: Memoization vs. Tabulation — The Deep Optimization Blueprint for Professionals


Advanced Sorting Algorithms: Merge Sort Internals — Merge Tree, Cache Behavior & Real Cost Analysis


Enjoyed this post? [Follow here] for daily coding insights.

Comments