Advertisement
fahimkamal63

Tree

Jul 25th, 2019
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. //  Tree Test
  2. //  Date : 25.07.19
  3. #include<iostream>
  4. using namespace std;
  5.  
  6. struct BST{
  7.     int data;
  8.     BST* left;
  9.     BST* right;
  10. };
  11.  
  12. BST* getnode(int data){
  13.     BST* newnode = new BST();
  14.     newnode->data = data;
  15.     newnode->left = NULL;
  16.     newnode->right = NULL;
  17.  
  18.     return newnode;
  19. }
  20.  
  21. BST* Insert(BST* node, int data){
  22.     if(node == NULL) {
  23.         node = getnode(data);
  24.     }
  25.     else if(data < node->data){
  26.         node->left = Insert(node->left, data);
  27.     }
  28.     else node->right = Insert(node->right, data);
  29.  
  30.     return node;
  31. }
  32.  
  33. void inorder(BST* node){
  34.     if(node == NULL) return;
  35.     inorder(node->left);
  36.     cout << node->data << ' ';
  37.     inorder(node->right);
  38.  
  39. }
  40.  
  41. bool Search(BST* node, int data){
  42.     if(node == NULL) return false;
  43.     else if(node->data == data) return true;
  44.     else if(data < node->data) return Search(node->left, data);
  45.     else return Search(node->right, data);
  46. }
  47.  
  48. BST* findmin(BST* node){
  49.     while(node->left != NULL) node = node->left;
  50.     return node;
  51. }
  52.  
  53. BST* Delete(BST* node,int data){
  54.     if(node == NULL) return node;
  55.     else if(data < node->data) node->left = Delete(node->left, data);
  56.     else if(data > node->data) node->right = Delete(node->right, data);
  57.     else{
  58.         if(node->left == NULL && node->right == NULL){
  59.             delete node;
  60.             node = NULL;
  61.         }
  62.         else if(node->left == NULL){
  63.             BST* temp = node;
  64.             node = node->right;
  65.             delete temp;
  66.         }
  67.         else if(node->right == NULL){
  68.             BST* temp = node;
  69.             node = node->left;
  70.             delete temp;
  71.         }
  72.         else{
  73.             BST* temp = findmin(node->right);
  74.             node->data = temp->data;
  75.             node->right = Delete(node->right, temp->data);
  76.         }
  77.     }
  78.     return node;
  79. }
  80.  
  81. int main(){
  82.     BST* root = NULL;
  83.     root = Insert(root, 67);
  84.     root = Insert(root, 34);
  85.     root = Insert(root, 82);
  86.     root = Insert(root, 12);
  87.     root = Insert(root, 45);
  88.     root = Insert(root, 78);
  89.  
  90.     inorder(root);
  91.     cout << endl;
  92.     //if(Search(root, 56)) cout << "Yes";
  93.     //else cout << "No";
  94.     Delete(root, 12);
  95.     inorder(root);
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement