Level Order Traversal

The below function requires a queue data structure of type pointer to Node to be created and initialised.

void levelOrder(struct Node *ptr) {

    // Queue structure to store pointer
    struct Queue q;
    
    // Print the root node as it is on the topmost level
    printf("%d\t", ptr -> data);
    // Enqueue root node to the queue
    enqueue(&q, ptr);
    
    while (!isEmpty(q)) {
        // Obtain root of subtree
        ptr = dequeue(&q);
        // Print & enqueue the left child of next level if present
        if (ptr -> left) {
            printf("%d\t", ptr -> left -> data);
            enqueue(&q, ptr -> left);
        }
        // Print & enqueue the left child of next level if present
        if (ptr -> right) {
            printf("%d\t", ptr -> right -> data);
            enqueue(&q, ptr -> right); 
        }
    }

}

Contributed by Nitin Ranganath

Last updated