Bekzhan

Decart experimental

Jan 28th, 2013
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.48 KB | None | 0 0
  1. PTree find(PTree t, int key)
  2. {
  3.     if (!t)
  4.         return NULL;
  5.  
  6.     if (t -> key == key)
  7.         return t;
  8.  
  9.     if (key < t -> key)
  10.         return find(t -> l, key);
  11.     else
  12.         return find(t -> r, key);
  13. }
  14.  
  15. PTree merge(PTree l, PTree r)
  16. {
  17.     if (!l || !r)
  18.         {
  19.             return l ? l : r;
  20.         }
  21.  
  22.     if (l -> prior > r -> prior)
  23.         return merge(l -> r, r);
  24.     else
  25.         return merge(l, r -> l);   
  26. }
  27.  
  28. void erase(PTree &t, int key)
  29. {
  30.     PTree tmp = find(t, key);
  31.  
  32.     PTree k = merge(tmp -> l, tmp -> r);
  33.  
  34.     *&tmp = k;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment