Advertisement
fabis_sparks

BinaryTree

Dec 3rd, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Node
  5. {
  6.    int x;
  7.    Node *l,*r;
  8. };
  9.  
  10. void show(Node *&Tree)
  11. {
  12.     if (Tree!=NULL)
  13.     {
  14.        show(Tree->l);
  15.        cout<<Tree->x;
  16.        show(Tree->r);
  17.     }
  18. }
  19.  
  20.  
  21. void del(Node *&Tree){
  22.    if (Tree!=NULL)
  23.     {
  24.        del(Tree->l);
  25.        del(Tree->r);
  26.        delete Tree;
  27.        Tree = NULL;
  28.     }
  29.  
  30. }
  31.  
  32. void add_node(int x,Node *&MyTree)
  33. {
  34.     if (NULL==MyTree)  
  35.     {
  36.         MyTree=new Node;
  37.         MyTree->x=x;
  38.         MyTree->l=MyTree->r=NULL;
  39.     }
  40.  
  41.                    if (x<MyTree->x)  
  42.                       {
  43.                           if (MyTree->l!=NULL) add_node(x,MyTree->l);
  44.                           else
  45.                           {
  46.                               MyTree->l=new Node;
  47.                               MyTree->l->l=MyTree->l->r=NULL;
  48.                               MyTree->l->x=x;
  49.                           }
  50.                       }
  51.  
  52.                     if (x>MyTree->x)  
  53.                       {
  54.                           if (MyTree->r!=NULL) add_node(x,MyTree->r); //При помощи рекурсии заталкиваем элемент на свободный участок
  55.                           else //Если элемент получил свой участок, то
  56.                           {
  57.                               MyTree->r=new Node;
  58.                               MyTree->r->l=MyTree->r->r=NULL;
  59.                               MyTree->r->x=x;
  60.                           }
  61.                       }
  62. }
  63.  
  64. int main()
  65. {
  66.    Node *Tree=NULL;  //Создаю указатель, тип которого = звено дерева и инициализирую его пустотой
  67.       for (int i=5;i>0;i--) add_node(i,Tree); //Это я забивал 5-4-3-2-1, а вывод сами увидите
  68.      show(Tree);
  69.      cout << '\n';
  70.       del(Tree);
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement