Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3.  
  4. using namespace std;
  5.  
  6. struct Node
  7. {
  8. int data;
  9. struct Node *left;
  10. struct Node *right;
  11. };
  12.  
  13. int height(struct Node *root)
  14. {
  15. if(root == NULL)
  16. return 0;
  17. return 1 +
  18. max(height(root->left), height(root->right));
  19. }
  20.  
  21. // Recursive solution for level order.
  22. void levelOrderUtil(
  23. struct Node *root,
  24. int level,
  25. int dispLevel)
  26. {
  27. if(root == NULL)
  28. return;
  29. if(level == dispLevel) {
  30. cout<<root->data<<" ";
  31. return;
  32. }
  33. levelOrderUtil(root->left, level+1, dispLevel);
  34. levelOrderUtil(root->right, level+1, dispLevel);
  35. }
  36.  
  37. void levelOrderRec(struct Node *root)
  38. {
  39. int hgt = height(root);
  40. for(int i=0; i<hgt; i++)
  41. levelOrderUtil(root, 0, i);
  42. }
  43.  
  44. struct Node *createNode(int val)
  45. {
  46. struct Node *tmp = (struct Node*)
  47. malloc(sizeof(struct Node));
  48. tmp->data = val;
  49. tmp->left = NULL;
  50. tmp->right = NULL;
  51. return tmp;
  52. }
  53.  
  54. // Iterative solution for level order.
  55. void levelOrderItr(struct Node *root)
  56. {
  57. if(root == NULL)
  58. return;
  59. queue<struct Node*> que;
  60. que.push(root);
  61. while(!que.empty())
  62. {
  63. struct Node *tmp = que.front();
  64. que.pop();
  65. cout<<tmp->data<<" ";
  66. if(tmp->left)
  67. que.push(tmp->left);
  68. if(tmp->right)
  69. que.push(tmp->right);
  70. }
  71. cout<<endl;
  72. }
  73.  
  74. int main(int argc, char* argv[])
  75. {
  76. struct Node *root = createNode(10);
  77. root->left = createNode(4);
  78. root->right = createNode(8);
  79. root->left->left = createNode(50);
  80. root->left->right = createNode(24);
  81. root->right->left = createNode(5);
  82. root->right->right = createNode(12);
  83. root->left->left->right = createNode(18);
  84.  
  85. cout<<"Level Order Traversal: "<<endl;
  86. levelOrderRec(root);
  87. cout<<endl;
  88. cout<<"Iterative level order: "<<endl;
  89. levelOrderItr(root);
  90.  
  91. return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement