Advertisement
EmanueleManca

Untitled

Mar 23rd, 2022
775
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.59 KB | None | 0 0
  1. int delete(Tree* root, Item x) {
  2.     if (!*root) {
  3.         return 0;
  4.     }
  5.     bnode* n = searchInTree(*root, x);
  6.  
  7.     // node does not have two children
  8.     if (!(n->right && n->left)) {
  9.         if (n->parent->right == n) {
  10.             n->parent->right = (bnode*)((long)n->left | (long)n->right);
  11.         }
  12.         else {
  13.             n->parent->left = (bnode*)((long)n->left | (long)n->right);
  14.         }
  15.         free(n);
  16.         return 1;
  17.     }
  18.  
  19.     Item maxKey = (max(n->left))->key;
  20.     if (!delete(&(n->left), maxKey)) {
  21.         return 0;
  22.     }
  23.     n->key = maxKey;
  24.     return 1;
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement