Zadatak 4 Implementacija binarnog stabla pomocu polja


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

Implementacija binarnog stabla pomocu polja


Copy this code and paste it in your HTML
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct element{
  5. bool used;
  6. int label;
  7. };
  8.  
  9. struct tstablo
  10. {
  11. element stablo_polje[1000];
  12. };
  13.  
  14. int ParentB(int n, tstablo *stablo_polje){
  15. if (stablo_polje->stablo_polje[n].used==1)
  16. return (n/2);
  17. else
  18. return (-1);
  19. }
  20.  
  21. int LeftChildB(int n, tstablo *stablo_polje){
  22. if (stablo_polje->stablo_polje[n].used==1)
  23. if (stablo_polje->stablo_polje[n*2].used==1)
  24. return (n*2);
  25. else
  26. return (-1);
  27. else
  28. return (-1);
  29. }
  30.  
  31. int RightChildB(int n, tstablo *stablo_polje){
  32. if (stablo_polje->stablo_polje[n].used==1)
  33. if (stablo_polje->stablo_polje[n*2+1].used==1)
  34. return (n*2+1);
  35. else
  36. return (-1);
  37. else
  38. return (-1);
  39. }
  40.  
  41. int LabelB(int n, tstablo *stablo_polje){
  42. if (stablo_polje->stablo_polje[n].used==1)
  43. return ((int)stablo_polje->stablo_polje[n].label);
  44. else
  45. return (-1);
  46. }
  47.  
  48. void ChangeLabelB(int x, int n, tstablo *stablo_polje){
  49. if (stablo_polje->stablo_polje[n].used==1)
  50. stablo_polje->stablo_polje[n].label=x;
  51. else
  52. cout<<"Navedeni cvor ne postoji."<<endl;
  53. }
  54.  
  55. int RootB(tstablo *stablo_polje){
  56. if (stablo_polje->stablo_polje[1].used==1)
  57. return 1;
  58. else
  59. return (-1);
  60. }
  61.  
  62. void CreateLeftB(int x, int n, tstablo *stablo_polje){
  63. if (stablo_polje->stablo_polje[n].used==1)
  64. if (stablo_polje->stablo_polje[n*2].used!=1){
  65. stablo_polje->stablo_polje[n*2].label=x;
  66. stablo_polje->stablo_polje[n*2].used=1;
  67. }
  68. else
  69. cout<<"Pogreska! Lijevo dijete je vec kreirano! "<<endl;
  70. else
  71. cout<<"Navedeni cvor ne postoji."<<endl;
  72. }
  73.  
  74. void CreateRightB(int x, int n, tstablo *stablo_polje){
  75. if (stablo_polje->stablo_polje[n].used==1)
  76. if (stablo_polje->stablo_polje[n*2+1].used!=1){
  77. stablo_polje->stablo_polje[n*2+1].label=x;
  78. stablo_polje->stablo_polje[n*2+1].used=1;
  79. }
  80. else
  81. cout<<"Pogreska! Lijevo dijete je vec kreirano! "<<endl;
  82. else
  83. cout<<"Navedeni cvor ne postoji."<<endl;
  84. }
  85.  
  86. void DeleteB(int n, tstablo *stablo_polje){
  87. if(stablo_polje->stablo_polje[n].used==1)
  88. {
  89. if (stablo_polje->stablo_polje[n*2].used==1)
  90. DeleteB(n*2, stablo_polje);
  91. if (stablo_polje->stablo_polje[n*2+1].used==1)
  92. DeleteB(n*2+1, stablo_polje);
  93. stablo_polje->stablo_polje[n].used=0;
  94. }
  95. else
  96. cout<<"Navedeni cvor ne postoji."<<endl;
  97. }
  98.  
  99. void InitB(int x ,tstablo *stablo_polje) {
  100. stablo_polje->stablo_polje[1].label=x;
  101. stablo_polje->stablo_polje[1].used=1;
  102.  
  103. for (int i=2; i<1000; i++)
  104. stablo_polje->stablo_polje[i].used=0;
  105. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.