Advertisement
konchin_shih

binary search tree

Feb 2nd, 2021
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. struct bst {
  2.     struct node {
  3.         int k;
  4.         node *l, *r;
  5.         node(int x = 0): k(x), l(nullptr), r(nullptr) {}
  6.     }*root;
  7.  
  8. //constructor
  9.     bst(): root(nullptr) {}
  10.  
  11. //insert
  12.     void _insert(int x, node* cur) {
  13.         //border
  14.         if (!root) {root = new node(x); return;}
  15.  
  16.         //common
  17.         if (x < cur->k) {
  18.             //go left
  19.             if (cur->l) _insert(x, cur->l);
  20.             else cur->l = new node(x);
  21.         } else {
  22.             if (cur->r) _insert(x, cur->r);
  23.             else cur->r = new node(x);
  24.         }
  25.     }
  26.     void insert(int x) {
  27.         _insert(x, root);
  28.     }
  29.  
  30. //print
  31.     void _print(node* cur) {
  32.         if (!cur) return;
  33.         _print(cur->l);
  34.         cout << cur->k << ' ';
  35.         _print(cur->r);
  36.     }
  37.     void print() {
  38.         _print(root);
  39.     }
  40. };
  41.  
  42. inline void solve() {
  43.     bst tree;
  44.     for (auto && i : {1, 5, 4, 2, 0, 3, 6, 9, 7, 8})
  45.         tree.insert(i);
  46.     tree.print();
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement