m2skills

left view iter cpp

Jul 24th, 2018
557
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.15 KB | None | 0 0
  1. // http://code2begin.blogspot.com
  2. // program to print left view binary tree iteratively
  3.  
  4. /**
  5.  * Created by MOHIT on 25-05-2018.
  6.  */
  7. #include <iostream>
  8. #include <queue>
  9. #include <map>
  10. #include <list>
  11.  
  12. using namespace std;
  13.  
  14. // node class
  15. class node{
  16. public:
  17.     int data;
  18.     node* left;
  19.     node* right;
  20. };
  21.  
  22. // function that returns a pointer to new node
  23. node* createNode(int element){
  24.     node* temp = (node*) malloc(sizeof(node));
  25.     temp->data = element;
  26.     temp->left = NULL;
  27.     temp->right = NULL;
  28.     return temp;
  29. }
  30.  
  31. // BFS iretative using queue
  32. void left_view_iter(node* root){
  33.     if(root == NULL){
  34.         return;
  35.     }
  36.  
  37.     // creating a Queue for storing node for level wise traversal
  38.     queue<node *> Q;
  39.     Q.push(root);
  40.     int level = 0, max_level = 0;
  41.  
  42.     while(!Q.empty()){
  43.         // store the current size of the Q
  44.         int count = Q.size();
  45.         level += 1;
  46.         while(count--) {
  47.             // pop the first node from the queue
  48.             node *NODE = Q.front();
  49.             Q.pop();
  50.             if (max_level < level) {
  51.                 cout << NODE->data << " ";
  52.                 max_level = level;
  53.             }
  54.  
  55.             // push the left child on queue
  56.             if (NODE->left != NULL) {
  57.                 Q.push(NODE->left);
  58.             }
  59.  
  60.             // push the right child on queue
  61.             if (NODE->right != NULL) {
  62.                 Q.push(NODE->right);
  63.             }
  64.         }
  65.     }
  66.  
  67. }
  68.  
  69.  
  70. int main() {
  71.     node* head = createNode(1);
  72.     head->left = createNode(2);
  73.     head->right = createNode(3);
  74.     head->left->left = createNode(4);
  75.     head->left->right = createNode(5);
  76.     head->right->right = createNode(6);
  77.     head->left->left->right = createNode(7);
  78.     head->right->right->left = createNode(8);
  79.     head->left->left->right->left = createNode(9);
  80.     head->left->left->right->left->left = createNode(10);
  81.     head->right->right->left->right = createNode(11);
  82.  
  83.     cout<<"Left view of the binary tree is : "<<endl;
  84.     left_view_iter(head);
  85.     return 0;
  86. }
  87.  
  88.  
  89. /*
  90.  
  91. Left view of the binary tree is :
  92. 1 2 4 7 9 10
  93. Process finished with exit code 0
  94.  
  95. */
Add Comment
Please, Sign In to add comment