Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. typedef int Data;
  5. typedef struct N Node;
  6.  
  7. struct N
  8. {
  9. Data val;
  10. struct N *left;
  11. struct N *right;
  12. };
  13.  
  14. typedef struct Elem queueNode;
  15. typedef struct Q Queue;
  16.  
  17. struct Elem
  18. {
  19. Node* val;
  20. struct Elem* next;
  21. };
  22.  
  23. struct Q
  24. {
  25. queueNode *front;
  26. queueNode *rear;
  27. };
  28.  
  29. Queue* createQueue()
  30. {
  31. Queue *q;
  32. q=(Queue *)malloc(sizeof(Queue));
  33. if (q==NULL)
  34. return NULL;
  35. q->front=q->rear=NULL;
  36. return q;
  37. }
  38.  
  39. int isEmpty(Queue*q)
  40. {
  41. return q->front==NULL;
  42. }
  43.  
  44. void enQueue(Queue*q,Node* v)
  45. {
  46. queueNode* newNode=(queueNode*)malloc(sizeof(queueNode));
  47. newNode->val=v;
  48. newNode->next=NULL;
  49. if (q->rear==NULL)
  50. q->rear=newNode;
  51. else
  52. {
  53. (q->rear)->next=newNode;
  54. (q->rear)=newNode;
  55. }
  56. if (q->front==NULL) q->front=q->rear;
  57. }
  58.  
  59. Node* deQueue(Queue*q)
  60. {
  61. Node* d=NULL;
  62. queueNode* newNode;
  63. if (isEmpty(q))
  64. return d;
  65. newNode=q->front;
  66. d=newNode->val;
  67. q->front=(q->front)->next;
  68. free(newNode);
  69. return d;
  70. };
  71.  
  72. void levelOrderTraversalNRec (Node*root)
  73. {
  74. if (root==NULL)
  75. return;
  76. Queue *Q = createQueue();
  77. enQueue(Q, root);
  78. while (!isEmpty(Q))
  79. {
  80. root=deQueue(Q);
  81. printf ("%d ", root->val);
  82. if (root ->left!=NULL) enQueue(Q,root ->left);
  83. if (root ->right!=NULL) enQueue(Q,root ->right);
  84. }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement