Posted By

HeatPwnz on 01/11/14


Tagged

cpp sp Z4


Versions (?)

bin_pointer.h


 / Published in: C++
 

implementacija binarnog stabla pomocu pokazivaca

  1. struct btree {
  2. char oznaka;
  3. btree *lijevo, *desno;
  4. };
  5. typedef struct btree *element;
  6.  
  7. element postoji(char oznaka, btree *B){
  8. btree *PL=B;
  9. btree *PD=B;
  10. if(oznaka==B->oznaka) return B;
  11. else{
  12. if(B->lijevo) PL=postoji(oznaka, B->lijevo);
  13. if(B->desno) PD=postoji(oznaka, B->desno);
  14. }
  15. if(PL)
  16. if(oznaka==PL->oznaka) return PL;
  17. if(PD)
  18. if(oznaka==PD->oznaka) return PD;
  19. else return NULL;
  20. }
  21. btree *LeftChildB(btree *n, btree *B){
  22. return n->lijevo;
  23. }
  24.  
  25. btree *RightChildB(btree *n, btree *B){
  26. return n->desno;
  27. }
  28. void CreateLeftB(char x, btree *n, btree *B){
  29. if (n->lijevo) cout << "Taj cvor vec ima lijevo dijete!" << endl;
  30. else{
  31. n->lijevo = new btree;
  32. n->lijevo->oznaka=x;
  33. n->lijevo->lijevo=NULL;
  34. n->lijevo->desno=NULL;
  35. }
  36. }
  37. void ChangeLabelB(char x, btree *n, btree *B){
  38. n->oznaka=x;
  39. }
  40. void CreateRightB(char x, btree *n, btree *B){
  41. if (n->desno) cout << "Taj cvor vec ima desno dijete!" << endl;
  42. else{
  43. n->desno = new btree;
  44. n->desno->oznaka=x;
  45. n->desno->lijevo=NULL;
  46. n->desno->desno=NULL;
  47. }
  48. }
  49. char LabelB(btree *n, btree *B){
  50. return n->oznaka;
  51. }
  52. btree *ParentB(btree *n, btree *B){
  53. static btree *cvor;
  54. static bool nadjen=false;
  55. if (B->lijevo==n || B->desno==n){
  56. nadjen=true;
  57. cvor=B;
  58. }
  59. if (nadjen) return cvor;
  60. if (B->lijevo) ParentB(n,B->lijevo);
  61. if (B->desno) ParentB(n,B->desno);
  62. }
  63. btree *RootB(btree *B){
  64. return B;
  65. }
  66. void DeleteB(btree *n, btree *B){
  67. btree *roditelj = ParentB(n,B);
  68. if (roditelj->lijevo==n) roditelj->lijevo=NULL;
  69. else roditelj->desno=NULL;
  70.  
  71. if (n->lijevo) DeleteB(n->lijevo,B);
  72. if (n->desno) DeleteB(n->desno,B);
  73. delete n;
  74.  
  75. }
  76. btree *InitB(int x, btree *B){
  77. B=new btree;
  78. B->lijevo=NULL;
  79. B->desno=NULL;
  80. B->oznaka=x;
  81. return B;
  82. }

Report this snippet  

Comments

RSS Icon Subscribe to comments
Posted By: HeatPwnz on January 11, 2014

implementacija binarnog stabla pomocu pokazivaca

You need to login to post a comment.