jain12

reverse level order traversing using stack,queue in a tree

Feb 28th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. #include<iostream>
  2. #include<queue>
  3. #include<stack>
  4. using namespace std;
  5.  
  6. class Node{
  7.   public:
  8.       int data;
  9.       Node *left,*right;
  10.       Node(int key){
  11.         data=key;
  12.         left=NULL;
  13.         right=NULL;
  14.         }
  15.   };
  16.  
  17. void ReverseLevelOrder(Node *root){
  18.   if(root==NULL)
  19.     return;
  20.   stack<Node*>s;
  21.   queue<Node*>q;
  22.   q.push(root);
  23.   s.push(root);
  24.   while(!(q.empty())){
  25.     Node *temp=q.front();
  26.     q.pop();
  27.     if(temp->right!=NULL){
  28.       s.push(temp->right);
  29.       q.push(temp->right);
  30.       }
  31.     if(temp->left!=NULL){
  32.       s.push(temp->left);
  33.       q.push(temp->left);
  34.       }
  35.     }
  36.   while(!(s.empty())){
  37.     cout<<" "<<(s.top())->data;
  38.     s.pop();
  39.   }
  40.   }
  41.  
  42.  
  43.  
  44.  
  45. int main(){
  46.   Node *root=NULL;
  47.   Node *newnode=new Node(1);
  48.   root=newnode;
  49.   root->left=new Node(2);
  50.   root->right=new Node(3);
  51.   (root->left)->left=new Node(4);
  52.   (root->right)->right=new Node(5);
  53.   (root->left)->right=new Node(6);
  54.   ReverseLevelOrder(root);
  55.   return 0;
  56.   }
Add Comment
Please, Sign In to add comment