Implementacija binarnog stabla pomoću pokazivaca


/ Published in: C++
Save to your folder(s)



Copy this code and paste it in your HTML
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. struct Selement
  5. {
  6. double oznaka;
  7. Selement *lijevo, *desno;
  8. };
  9.  
  10. typedef Selement *element;
  11.  
  12. element LeftChildB(Selement *bin, Selement *n)
  13. {
  14. return n->lijevo;
  15. }
  16.  
  17. element RightChildB(Selement *bin, Selement *n)
  18. {
  19. return n->desno;
  20. }
  21.  
  22. double LabelB(Selement *bin, Selement *n)
  23. {
  24. return n->oznaka;
  25. }
  26.  
  27. element RootB(Selement *bin)
  28. {
  29. return(bin);
  30. }
  31.  
  32.  
  33. element ParentB(Selement *bin, Selement *n)
  34. {
  35. element t1;
  36. bool OK;
  37.  
  38. t1 = RootB(bin);
  39. if(t1==n)
  40. {
  41. cout <<"Cvor nema roditelja" << endl;
  42. exit(0);
  43. }
  44. }
  45.  
  46. void CreateLeftB(Selement *bin, Selement *n, double x)
  47. {
  48. element l,n1;
  49.  
  50. if(n->lijevo!=NULL)
  51. {
  52. cout <<"Cvor vec ima dijete" << endl;
  53. exit(0);
  54. }
  55. else
  56. {
  57. l = (Selement*)malloc(sizeof(Selement));
  58. l->lijevo = NULL;
  59. l->desno = NULL;
  60. l->oznaka = x;
  61. n->lijevo = l;
  62. }
  63. }
  64.  
  65. void CreateRightB(Selement *bin, Selement *n, double x)
  66. {
  67. element r;
  68.  
  69. if(n->desno != NULL){
  70. cout <<"Cvor vec ima desno dijete" << endl;
  71. exit(0);
  72. }
  73. else
  74. {
  75. r = (Selement*)malloc(sizeof(Selement));
  76. r->lijevo = NULL;
  77. r->desno = NULL;
  78. r->oznaka = x;
  79. n->desno = r;
  80. }
  81. }
  82.  
  83.  
  84. void Del(Selement *bin, Selement *n)
  85. {
  86. if(n->lijevo != NULL)Del(bin,LeftChildB(bin,n));
  87. if(n->desno != NULL) Del(bin,RightChildB(bin,n));
  88. free(n);
  89. }
  90.  
  91.  
  92. void DeleteB(Selement *bin, Selement *n)
  93. {
  94. element t1;
  95.  
  96. t1 = ParentB(bin,n);
  97. if(LeftChildB(bin,t1)==n)
  98. {
  99. t1->lijevo = NULL;
  100. }
  101. else
  102. {
  103. t1->desno = NULL;
  104. }
  105. Del(bin,n);
  106. }
  107.  
  108. void InitB (int x, Selement *n){
  109. n->oznaka=x;
  110. n->desno=NULL;
  111. n->lijevo=NULL;
  112. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.