Strukture stabla


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

binarno stablo uz pomoc polja


Copy this code and paste it in your HTML
  1. #include <cstring>
  2. using namespace std;
  3. struct element {
  4. int used;
  5. string label;
  6. };
  7.  
  8. struct bt {
  9. element elements[10000];
  10. };
  11. typedef struct bt btree;
  12. int Parent(int cvor, btree *stablo){
  13. if(cvor==1) return 0;
  14. if(cvor%2)
  15. cvor--;
  16. return cvor/2;
  17. }
  18. int LeftChildB(int cvor, btree *stablo) {
  19. if(stablo->elements[cvor].used == 0)
  20. return 0;
  21. if(stablo->elements[2*cvor].used == 1)
  22. return 2*cvor;
  23. }
  24.  
  25. int RightChildB(int cvor, btree *stablo) {
  26. if(stablo->elements[cvor].used == 0)
  27. return 0;
  28. if(stablo->elements[2*cvor+1].used == 1)
  29. return 2*cvor+1;
  30. else return 0;
  31. }
  32.  
  33. void LabelB(int cvor, btree *stablo) {
  34. if(stablo->elements[cvor].used==true)
  35. cout<<"Na cvoru "<<cvor<<" je label: "<<stablo->elements[cvor].label<<endl;
  36. else
  37. cout<<"Taj cvor nije iskoristen...\n";
  38. }
  39.  
  40.  
  41. void ChangeLabelB(string nova_vrijednost,int cvor, btree *stablo) {
  42. if(stablo->elements[cvor].used == 0){
  43. LabelB(cvor,stablo);
  44. return;
  45. }
  46. stablo->elements[cvor].label = nova_vrijednost;
  47. }
  48.  
  49. int RootB(btree *stablo) {
  50. if(stablo->elements[1].used == 0)
  51. return 0;
  52. else
  53. return 1;
  54. }
  55.  
  56. void CreateLeftB(string label, int cvor, btree *stablo) {
  57. if(stablo->elements[cvor].used == 0 || stablo->elements[2*cvor].used == 1) {
  58. cout << "Greska, zadani cvor ne postoji, ili nejgovo dijete vec postoji\n" << endl << endl;
  59. return;
  60. }
  61. stablo->elements[2*cvor].used = 1;
  62. stablo->elements[2*cvor].label = label;
  63. }
  64.  
  65. void CreateRightB(string label, int cvor, btree *stablo) {
  66. if(stablo->elements[cvor].used == 0 || stablo->elements[2*cvor+1].used == 1)
  67. {
  68. cout << "Greska, zadani cvor ne postoji, ili nejgovo dijete vec postoji\n" << endl << endl;
  69. return;
  70. }
  71. stablo->elements[2*cvor+1].used = 1;
  72. stablo->elements[2*cvor+1].label = label;
  73. }
  74.  
  75. void DeleteB(int cvor, btree *stablo) {
  76. stablo->elements[cvor].used = 0;
  77. if (LeftChildB(cvor, stablo))
  78. DeleteB(LeftChildB(cvor, stablo), stablo);
  79. if (RightChildB(cvor, stablo)) DeleteB(RightChildB(cvor, stablo), stablo);
  80. }
  81.  
  82. void InitB(string label, btree* stablo) {
  83. stablo->elements[1].label = label;
  84. stablo->elements[1].used = 1;
  85. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.