m2skills

right view iter cpp

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