Advertisement
PSS21

C++ S

May 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct nod
  6. {
  7. int val;
  8. nod *st;
  9. nod *dr;
  10. };
  11.  
  12. nod *rad;
  13.  
  14. void inserare(int valnou)
  15. {
  16. nod *nodnou=new nod;
  17. nodnou->val=valnou;
  18. nodnou->st=NULL;
  19. nodnou->dr=NULL;
  20.  
  21. if(!rad)
  22. {
  23. rad=nodnou;
  24. return;
  25. }
  26. nod *inert=rad;
  27. nod *tata;
  28. while(inert){
  29. tata=inert;
  30. if(inert->val < nodnou->val)
  31. inert=inert->dr;
  32. else
  33. inert=inert->st;}
  34.  
  35. if(tata->val<nodnou->val)
  36. tata-dr=nodnou;
  37. else
  38. tata-st=nodnou;
  39.  
  40.  
  41. }
  42.  
  43. void sterge(int valcaut)
  44. {
  45. nod* inert = rad;
  46. nod* tata;
  47.  
  48. while (inert->val != valcaut)
  49. {
  50. tata = inert;
  51. if (inert->val < valcaut)
  52. inert = intert->dr;
  53. else
  54. inter = inter->st;
  55.  
  56. if (!inert)
  57. return;
  58. }
  59.  
  60. if (rad->val == valcaut)
  61. {
  62. tata = new nod;
  63. tata->val = valcaut + 1;
  64. tata->st = rad;
  65. tata->dr = NULL;
  66. }
  67.  
  68. if (!intert->dr && !intert->st) // I
  69. {
  70. if (tata->val < valcaut)
  71. tata->dr = NULL;
  72. else
  73. tata->st = NULL;
  74. }
  75. else if (!intert->dr) // II
  76. {
  77. inert->val = intert->st->val;
  78. intert->st = inert->st->st;
  79. }
  80. else if (!inert->st) // III
  81. {
  82. inert->val = inert->dr->val;
  83. inert->dr = inert->dr->dr;
  84. }
  85. else // IV
  86. {
  87. nod* inert2 = inert->dr;
  88.  
  89. while (inert2->st)
  90. {
  91. tata = inert2;
  92. inert2 = inert2->st;
  93. }
  94.  
  95. inert->val = inert2->val;
  96. tata->st = inert2->dr;
  97. }
  98. }
  99.  
  100. void RSDpreordina(nod *inert)
  101. {
  102. cout<<inert->val;
  103. if(inert->st) RSDpreordina(inert->st);
  104. if(inert->dr) RSDpreordina(inert->dr);
  105.  
  106. }
  107. void SRDinordine(nod *inert)
  108. {
  109. if (inert->st) SRDinordine(inert->st);
  110. cout << inert->val;
  111. if (inert-dr) SRDinordine(inert->dr);
  112. }
  113.  
  114. void SDRpostordine(nod *inert)
  115. {
  116. if(inert->st)SDRpostordine(inert-st);
  117. if(inert->dr)SDRpostordine(inert-dr);
  118. cout<<(inert-val);
  119. }
  120.  
  121. int main() {
  122. std::cout << "Hello World!\n";
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement