Skip to content

Instantly share code, notes, and snippets.

@jitsceait
Created May 4, 2014 02:17
Show Gist options
  • Save jitsceait/fa6b984e0a376c1330e9 to your computer and use it in GitHub Desktop.
Save jitsceait/fa6b984e0a376c1330e9 to your computer and use it in GitHub Desktop.
Code for level order printing using queue
struct queue{
struct node *element;
struct queue *next;
};
typedef struct queue Queue;
void printLevel(Node * node){
Queue *q = NULL;
enqueue(&q, node);
while(!isEmpty(q)){
Node *temp = front(q);
printf("%d\n", temp->value);
printf("adding left and right of %d\n" , temp->value);
if(temp->left)
enqueue(&q, temp->left);
if(temp->right)
enqueue(&q, temp->right);
dequeue(&q);
}
}
void enqueue(Queue **queue, Node * node){
Queue *q = NULL;
Queue *head = *queue;
if(*queue == NULL){
q =(Queue *)malloc(sizeof(Queue));
q->element = node;
q->next = NULL;
*queue = q;
}
else{
q = *queue;
while(q->next)
q = q->next;
Queue *temp =(Queue *)malloc(sizeof(Queue));
q->next = temp;
temp->element = node;
temp->next = NULL;
*queue = head;
}
}
Node * front(Queue *queue){
if(queue != NULL)
return queue->element;
}
void dequeue(Queue **queue){
Queue *q = *queue;
Node * node = q->element;
Queue *temp = q;
q = temp->next;
temp = NULL;
free(temp);
*queue = q;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment