Advertisement
PianistaMichal

del_el_tree

Jan 26th, 2015
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. void del(int number){
  2.         tree_struct *poi=find(number);
  3.        
  4.         if(poi->left==NULL && poi->right==NULL){//dziala
  5.             if(poi==top){
  6.                 delete top;
  7.                 top=NULL;
  8.             }
  9.             else{
  10.                 tree_struct *father_poi=find_father(number);
  11.                 if(father_poi->left==poi)
  12.                     father_poi->left=NULL;
  13.                 else
  14.                     father_poi->right=NULL;
  15.                 delete poi;
  16.             }
  17.         }
  18.         else if(poi->left!=NULL && poi->right!=NULL){
  19.             tree_struct *prev_poi=previous(number);
  20.             if(poi->left==prev_poi){
  21.                 if(prev_poi->left!=NULL)
  22.                     poi->left=prev_poi->left;
  23.                 else
  24.                     poi->left=NULL;
  25.                 poi->number=prev_poi->number;
  26.                 delete prev_poi;
  27.             }
  28.             else{
  29.                 tree_struct *father_prev=find_father(prev_poi->number);
  30.                 poi->number=prev_poi->number;
  31.                
  32.                 if(prev_poi->left!=NULL){
  33.                     father_prev->right=prev_poi->left;
  34.                 }
  35.                 else
  36.                     father_prev->right=NULL;
  37.                 delete prev_poi;
  38.             }
  39.            
  40.         }
  41.         else{
  42.             if(poi==top){
  43.                 tree_struct *poi_help;
  44.                 if(poi->left!=NULL){
  45.                     poi_help=top->left;
  46.                     delete top;
  47.                     top=poi_help;
  48.                 }
  49.                 else{
  50.                     poi_help=top->right;
  51.                     delete top;
  52.                     top=poi_help;
  53.                 }
  54.             }
  55.             else{
  56.                 tree_struct *father_poi=find_father(number);
  57.                 if(poi->left!=NULL){
  58.                     if(father_poi->left==poi){
  59.                         father_poi->left=poi->left;
  60.                     }
  61.                     else{
  62.                         father_poi->right=poi->left;
  63.                     }
  64.                 }
  65.                 else{
  66.                     if(father_poi->left==poi){
  67.                         father_poi->left=poi->right;
  68.                     }
  69.                     else{
  70.                         father_poi->right=poi->right;
  71.                     }
  72.                 }
  73.                 delete poi;
  74.             }
  75.         }
  76.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement