Guest User

Untitled

a guest
Dec 3rd, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. Tree *del(struct Tree *tree, int key)
  2. {
  3. Tree* parrent=NULL;
  4. // jesli pusty
  5. if (tree == NULL)
  6. {
  7. cout<<"nie znaleziono"<<endl;
  8. return tree;
  9. }
  10. //Jeśli klucz do usuniecia jest mniejszy od obecnego->lewa gałąż
  11. if (key < tree->key){
  12. parrent=tree;
  13. tree->left = del(tree->left, key);}
  14.  
  15. //Jeśli klucz do usuniecia jest wiekszy od obecnego->prawa gałąż
  16. else if (key > tree->key){
  17. parrent=tree;
  18. tree->right = del(tree->right, key);}
  19.  
  20. //inna opcja jestesmy w wezle do usniecia
  21. else
  22. {
  23. // z jednym dzickiem lub bez
  24. if (tree->left == NULL)
  25. {
  26. Tree *temp = tree->right;
  27. cout<<"Usunieto "<<endl;
  28. free(tree);
  29. return temp;
  30. }
  31. else if (tree->right == NULL)
  32. {
  33. Tree *temp = tree->left;
  34. cout<<"Usunieto "<<endl;
  35. free(tree);
  36. return temp;
  37. }
  38.  
  39. //Z dwoma dziećmi: bierzemy najmniejszy wezel z prawego poddrezwa
  40. Tree* help=NULL;
  41. parrent=tree;
  42. tree=tree->right;
  43. while (tree->left != NULL){
  44. help=tree;
  45.  
  46. tree = tree->left;
  47.  
  48. }
  49. if(tree->right)help->left=tree->right;
  50. tree->right=parrent->right;
  51. tree->left=parrent->left;
  52. help=parrent;
  53. parrent=tree;
  54. delete help;
  55.  
  56.  
  57. }
  58. return parrent;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment