Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.00 KB | None | 0 0
  1. node *minValueNode(node* root){
  2.     node *atual = root;
  3.  
  4.     while(atual->left != NULL)
  5.          atual = atual->left;
  6.    
  7.      return atual;
  8. }
  9.  
  10. node *BST_delete(node* root, int64 l, int64 r){
  11.     node *temp = root;
  12.  
  13.     if(root == NULL) return root;
  14.  
  15.     if(root->key > r){
  16.         contador++;
  17.         root->left = BST_delete(root->left, l, r);        
  18.     }
  19.  
  20.     else if(root->key < l){
  21.         contador++;
  22.         root->right = BST_delete(root->right, l, r);
  23.     }
  24.  
  25.     else{
  26.         if (root->left == NULL){
  27.             node *temp = root->right;
  28.             free(root);
  29.             contador++;
  30.             return temp;
  31.         }
  32.         else if (root->right == NULL){
  33.             node *temp = root->left;
  34.             free(root);
  35.             contador++;
  36.             return temp;
  37.         }
  38.  
  39.         node* temp = minValueNode(root->right);
  40.         root->key = temp->key;
  41.         root->right = BST_delete(root->right, temp->key, r);
  42.         //contador++;
  43.     }
  44.     return root;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement