Posted By

dare10 on 01/20/14


Tagged


Versions (?)

Binarno pokazivac


 / Published in: C++
 

Header datoteka za implementaciju binarnog stabla pomocu pokazivaca

  1. #include<iostream>
  2. using namespace std;
  3. struct node{
  4. int label;
  5. node *lijevo,*desno;
  6. };
  7. node *InitB(int n,node *T){
  8. T = new node;
  9. T->lijevo = T->desno = NULL;
  10. T->label = n;
  11. return T;
  12. }
  13. node *RootB(node *T){
  14. return T;
  15. }
  16. void ChangeLabelB(int x,node *T){
  17. T->label = x;
  18. }
  19. node *ParentB(int n,node *T){
  20. if(T->label==n) return NULL;
  21. if(T->lijevo){
  22. if(T->lijevo->label==n) return T;
  23. ParentB(n,T->lijevo);
  24. }
  25. if(T->desno){
  26. if(T->desno->label==n) return T;
  27. ParentB(n,T->desno);
  28. }
  29. }
  30. node *LeftChildB(node *T){
  31. return T->lijevo;
  32. }
  33. node *RightChildB(node *T){
  34. return T->desno;
  35. }
  36. int LabelB(node *T){
  37. return T->label;
  38. }
  39. void CreateLeftB(int x,node *T){
  40. if(T->lijevo) cout << "Zauzeta pozicija!" << endl;
  41. else{
  42. node *novi = new node;
  43. novi->label = x;
  44. novi->lijevo = NULL;
  45. novi->desno = NULL;
  46. T->lijevo = novi;
  47. }
  48. }
  49. void CreateRightB(int x,node *T){
  50. if(T->desno) cout << "Zauzeta pozicija!" << endl;
  51. else{
  52. node *novi = new node;
  53. novi->label = x;
  54. novi->lijevo = NULL;
  55. novi->desno = NULL;
  56. T->desno = novi;
  57. }
  58. }
  59. void DeleteB(node *P,node *T){
  60. node *erase = P,*roditelj = ParentB(P->label,T);
  61. if(roditelj->lijevo==P) roditelj->lijevo = NULL;
  62. else roditelj->desno = NULL;
  63. if(P->lijevo) DeleteB(P->lijevo,T);
  64. if(P->desno) DeleteB(P->desno,T);
  65. delete erase;
  66. }

Report this snippet  

You need to login to post a comment.