HackerRank/Data Structures

[HackerRank] Trees > Tree: Level Order Traversal

ruming 2021. 11. 7. 19:28

https://www.hackerrank.com/challenges/tree-level-order-traversal/problem

tree를 level order로 출력한다. 

순서) root 노드 -> left child 노드 -> right child 노드

 

void levelOrder( struct node *root) {
    struct node *queue[500], *head;
    int q_head, q_end;
    
    if(!root)
        return;
    else{
        queue[0] = root;
        q_head = 0;
        q_end = 1;
        
        while(q_head < q_end){
            head = queue[q_head];
            q_head++;
            
            printf("%d ", head->data);
            
            if (head->left)
                queue[q_end++] = head->left;
            if (head->right)
                queue[q_end++] = head->right;
        }
    }
    
    
}

루트가 NULL이면 리턴하고 아니면 queue에 저장한다.

head에 queue의 헤드를 저장하고 q_head를 증가시킨다. head의 data를 출력한다.

left, right순으로 순회한다.