binarno stablo pomocu 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. typedef int labeltype;
  4.  
  5. struct elementi{
  6. labeltype label;
  7. elementi *lijevo, *desno;
  8. };
  9.  
  10. typedef elementi cvor;
  11. typedef elementi bstablo;
  12.  
  13. cvor ParentB(cvor n,bstablo *stablo){
  14. if(n==stablo){
  15. cout<<"Ne postoji roditelj.."<<endl;
  16. }
  17. cvor rod;
  18. if (stablo->lijevo){
  19. if(stablo->lijevo==n)
  20. return stablo->lijevo;
  21. rod=ParentB(n, stablo->lijevo);
  22. }
  23. if(stablo->desno){
  24. if(stablo->desno==n)
  25. return stablo->desno;
  26. rod=ParentB(n,stablo->desno);
  27. }
  28. return rod;
  29. };
  30.  
  31. cvor LeftChildB(cvor n, bstablo *stablo){
  32. return *n.lijevo;
  33. };
  34.  
  35. cvor RightChild(cvor n, bstablo *stablo){
  36. return *n.desno;
  37. };
  38.  
  39. labeltype LabelB(cvor n, bstablo *stablo){
  40. return n.label;
  41. };
  42. void ChangeLabelB(labeltype xy,cvor n,bstablo *stablo){
  43. n.label=xy;
  44. };
  45.  
  46. cvor RootB(bstablo *stablo){
  47. return *stablo;
  48. };
  49.  
  50. void CreateLeftB(labeltype xy,cvor n, bstablo *stablo){
  51. if(n.lijevo==NULL){
  52. cvor *pokazivac=new cvor;
  53. n.lijevo=pokazivac;
  54. pokazivac->lijevo=NULL;
  55. pokazivac->desno=NULL;
  56. return;
  57. }
  58. else{
  59. cout<<"Vec postoji lijevo dijete.."<<endl;
  60. return;
  61. }
  62. };
  63. void CreateRightB(labeltype xy, cvor n, bstablo *stablo){
  64. if(n.desno==NULL){
  65. cvor *pokazivac=new cvor;
  66. n.desno=pokazivac;
  67. pokazivac->lijevo=NULL;
  68. pokazivac->desno=NULL;
  69. return;
  70. }
  71. else{
  72. cout<<"Vec postoji desno dijete.."<<endl;
  73. return;}
  74. };
  75.  
  76. void DeleteB(cvor n, bstablo *stablo){
  77. cvor p;
  78. if(n.lijevo!=NULL) DelB(n.lijevo,stablo);
  79. if(n.desno!=NULL) DelB(n.desno, stablo);
  80. p=ParentB(n,stablo);
  81. if(p.lijevo==&n) P.lijevo=NULL;
  82. else p.desno=NULL;
  83. delete &n;
  84. };
  85. void InitB(bstablo *stablo, labeltype xy){
  86. cvor *pokazivac=new elementi;
  87. pokazivac->lijevo=NULL;
  88. pokazivac->desno=NULL;
  89. pokazivac->label=xy;
  90. stablo=pokazivac;
  91. };

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.