Advertisement
faunuss

Untitled

Aug 23rd, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.86 KB | None | 0 0
  1. #include "iostream"
  2. using namespace std;
  3. struct Node{
  4.     int value;
  5.  
  6.     Node* left;
  7.     Node* right;
  8.  
  9.     Node(int num):value(num), left(NULL), right(NULL) {}
  10. };
  11.  
  12. Node* Add(int num, Node* root){
  13.     if(root == NULL){
  14.         root = new Node(num);
  15.     }
  16.     if(num < root->value){
  17.         root->left = Add(num, root->left);
  18.     }
  19.     if(num > root->value) {
  20.         root->right = Add(num, root->right);
  21.     }
  22.     return root;
  23. }
  24.  
  25. Node* search(int num, Node* root){
  26.     if(num == root->value){
  27.         return root;
  28.     }
  29.     if(num < root->value){
  30.         return search(num, root->left);
  31.     }
  32.     if(num > root->value) {
  33.         return search(num, root->right);
  34.     }
  35.     return NULL;
  36. }
  37.  
  38. Node* del(int num, Node* root){
  39.     if(num == root->value){
  40.         if(root->left == NULL && root->right == NULL){
  41.             delete(root);
  42.             return NULL;
  43.         }
  44.         if(root->left == NULL){
  45.             Node* tmp = root->right;
  46.             delete(root);
  47.             root = tmp;
  48.             return root;
  49.         }
  50.         if(root->right == NULL){
  51.             Node* tmp = root->left;
  52.             delete(root);
  53.             root = tmp;
  54.             return root;
  55.         }
  56.         Node* tmp  = root->right;
  57.         while(tmp->left != NULL){
  58.             tmp = tmp->left;
  59.         }
  60.         tmp->left = root->left;
  61.         tmp = root->right;
  62.         delete(root);
  63.         root = tmp;
  64.         return root;
  65.     }
  66.     if(num < root->value){
  67.         root->left = del(num, root->left);
  68.     }
  69.     if(num > root->value) {
  70.         root->right= del(num, root->right);
  71.     }
  72. }
  73.  
  74. int main(){
  75.     Node* root = NULL;
  76.     root = Add(10,root);
  77.     root = Add(5,root);
  78.     root = Add(2,root);
  79.     root = Add(20,root);
  80.     root = Add(30,root);
  81.     root = Add(15,root);
  82.     Node* tmp = search(15, root);
  83.     root = del(10,root);
  84.  
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement