Advertisement
DontCallMeNuttoPleas

BST

Mar 25th, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. struct node{
  4.     int data;
  5.     node* l;
  6.     node* r;
  7. };
  8. typedef node n;
  9.  
  10. n* createnode(int data){
  11.     n* newnode=new n;
  12.     newnode->data=data;
  13.     newnode->l=NULL;
  14.     newnode->r=NULL;
  15.     return newnode;
  16. }
  17.  
  18. void search(n* head,int data){
  19.     vector<int> v,z;
  20.     n* curr=head,*p;
  21.     bool check=0;
  22.     while(curr!=NULL){
  23.         p=curr;
  24.         v.push_back(curr->data);
  25.         if(data>=curr->data){
  26.             curr=curr->r;
  27.         }else
  28.             curr=curr->l;
  29.     }
  30.     z=v;
  31.     while(v.back()!=data){
  32.         v.pop_back();
  33.         if(v.empty()) break;
  34.     }
  35.     if(!v.empty()){
  36.         for(auto x:v){
  37.             printf("%d ",x);
  38.         }
  39.     }
  40.     else{
  41.         for(auto x:z){
  42.             printf("%d ",x);
  43.         }
  44.         printf("0");
  45.     }
  46.     cout << "\n";
  47.     return;
  48. }
  49.  
  50. n* insert(n* head,int data){
  51.     n* newnode=createnode(data);
  52.     if(head==NULL) return newnode;
  53.     n* curr=head,*p;
  54.     while(curr!=NULL){
  55.         p=curr;
  56.         if(data>=curr->data){
  57.             curr=curr->r;
  58.         }else
  59.             curr=curr->l;
  60.     }
  61.     if(p->data<=data){
  62.         p->r=newnode;
  63.     }else
  64.         p->l=newnode;
  65.     return head;
  66. }
  67. int main(){
  68.     n* head=NULL,*curr;
  69.     int n,data;
  70.     scanf("%d",&n);
  71.     for(int i=0;i<n;i++){
  72.         scanf("%d",&data);
  73.         head=insert(head,data);
  74.     }
  75.     int m;
  76.     scanf("%d",&m);
  77.     for(int i=0;i<m;i++){
  78.         scanf("%d",&data);
  79.         curr=head;
  80.         search(curr,data);
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement