Advertisement
YEZAELP

SMMR-083: Binary Search Tree

Apr 27th, 2021
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.55 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef struct node{
  6.     int data;
  7.     node *left, *right;
  8. };
  9.  
  10. node *create(int data){
  11.     node *Node = new node;
  12.     Node -> data = data;
  13.     Node -> left = nullptr;
  14.     Node -> right = nullptr;
  15.     return Node;
  16. }
  17.  
  18. node *insert(node *root, int data){
  19.     if(root == nullptr)
  20.         return create(data);
  21.     if(data < root -> data)
  22.         root -> left = insert(root -> left, data);
  23.     else
  24.         root -> right = insert(root -> right, data);
  25.     return root;
  26. }
  27.  
  28. vector <int> ans;
  29.  
  30. bool find(node *root, int data){
  31.     if(root == nullptr)
  32.         return false;
  33.     ans.push_back(root -> data);
  34.     if(data < root -> data)
  35.         return find(root -> left, data);
  36.     else if(data > root -> data)
  37.         return find(root -> right, data);
  38.     find(root -> right, data);
  39.     return true;
  40. }
  41.  
  42. int main(){
  43.  
  44.     int n;
  45.     scanf("%d", &n);
  46.  
  47.     node *root = nullptr;
  48.  
  49.     for(int i=1;i<=n;i++) {
  50.         int x;
  51.         scanf("%d", &x);
  52.         root = insert(root, x);
  53.     }
  54.  
  55.     int m;
  56.     scanf("%d", &m);
  57.  
  58.     for(int i=1;i<=m;i++){
  59.         int x;
  60.         scanf("%d", &x);
  61.         bool fnd = find(root, x);
  62.         int sz = ans.size();
  63.         int idx = sz-1;
  64.         for(int i=sz-1;i>=0;i--){
  65.             if(ans[i] == x){
  66.                 idx = i;
  67.                 break;
  68.             }
  69.         }
  70.         for(int i=0;i<=idx;i++) printf("%d ", ans[i]);
  71.         if(!fnd) printf("0");
  72.         printf("\n");
  73.         if(!ans.empty()) ans.clear();
  74.     }
  75.  
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement