ulvis.paste.net

Paste Search Dynamic
Recent pastes
node
  1. #include<bits/stdc++.h>
  2. //top view side view tree
  3. using namespace std;
  4. struct node
  5. {
  6.         struct node* left;
  7.         struct node* right;
  8.         int data;
  9. };
  10.  
  11. struct node* newnode(int data)
  12. {
  13.         struct node* newnode=(struct node*)malloc(sizeof(struct node));
  14.         newnode->left=null;
  15.         newnode->right=null;
  16.         newnode->data=data;
  17.         return newnode;
  18. }
  19.  
  20. void preorder(struct node* root)
  21. {
  22.         if(root==null)
  23.         {
  24.                 return;
  25.         }
  26.  
  27.         preorder(root->left);
  28.         cout<<root->data<<" ";
  29.         preorder(root->right);
  30.  
  31. }
  32.  
  33. void fillmap(struct node* root,map <int,vector<int> >&mp,int index)
  34. {
  35.         if(root==null)
  36.         {
  37.                 return;
  38.         }
  39.         mp[index].push_back(root->data);
  40.         fillmap(root->left,mp,index-1);
  41.         fillmap(root->right,mp,index+1);
  42. }
  43.  
  44. void verticalview(struct node* root)
  45. {
  46.    map<int ,vector<int> > mp;
  47.    fillmap(root,mp,0);
  48.    map<int, vector<int> >:: iterator it;
  49.    for(it=mp.begin();it!=mp.end();it++)
  50.    {
  51.         cout<<it->first<<endl;
  52.    }
  53.  
  54. }
  55. int main()
  56. {
  57.         struct node* root= null;
  58.         root=newnode(5);
  59.         root->left=newnode(-4);
  60.         root->right=newnode(7);
  61.         root->left->left=newnode(3);
  62.         root->left->right=newnode(9);
  63.         root->right->left=newnode(1);
  64.         root->right->right=newnode(2);
  65.  
  66. verticalview(root);
  67. }
  68.  
Parsed in 0.012 seconds