Posted By

karlo-zg on 01/13/14


Tagged

binarno stablo


Versions (?)

glavni program


 / Published in: C++
 

4 zadatak iz struktura podataka

  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include "prvo_dijete-sljedeci_brat.h"
  5. #include "algoritmi_ophodjenja.h"
  6. //#include "binarnoS_polje.h"
  7. #include "binarnoS_pokazivaci.h"
  8. using namespace std;
  9.  
  10. void obicno_stablo(){
  11. tree stablo=new tstablo;
  12. cout<<"Napomena: Dodjela oznake = indeks*3(osim korijena)"<<endl;
  13. cout<<"Inicijaliziram stablo s korijenom na indexu 0 i oznakom 6..."<<endl;
  14. initT(0,stablo);
  15. cout<<"Oznaka korijena:"<<labelT(rootT(stablo),stablo)<<endl;
  16. cout<<"Dodajem potomke korijenu [indeksi:3,6,7]:"<<endl;
  17. createT(3,0,stablo); createT(6,0,stablo); createT(7,0,stablo);
  18. cout<<"Oznaka(indeks) prvog dijeteta korijena:"<<labelT(firstchildT(0,stablo),stablo)<<"(";
  19. cout<<firstchildT(0,stablo)<<")"<<endl;
  20. cout<<"Stablo(oznake):\n\t"<<labelT(0,stablo)<<endl;
  21. cout<<labelT(3,stablo)<<"\t"<<labelT(6,stablo)<<"\t"<<labelT(7,stablo)<<endl;
  22. cout<<"\nDodajem potomke prvom dijetetu[3]->4,8 i sljedecem bratu[6]->5,9"<<endl;
  23. createT(4,3,stablo); createT(8,3,stablo);
  24. createT(5,6,stablo); createT(9,6,stablo);
  25. cout<<"Pokusavam napraviti potomka nepostojecem cvoru[100]"<<endl;
  26. createT(4,100,stablo);
  27. cout<<"Roditelji cvora 8:"<<parentT(8,stablo)<<", 3:"<<parentT(3,stablo)<<endl;
  28. cout<<"Mijenjam oznaku korijena iz 6 u 666..."<<endl;
  29. changelabelT(666,rootT(stablo),stablo);
  30. cout<<"Korijen stabla sa svojom djecom..."<<endl;
  31. cout<<"\t"<<labelT(0,stablo)<<endl;
  32. cout<<labelT(3,stablo)<<"\t"<<labelT(6,stablo)<<"\t"<<labelT(7,stablo)<<endl;
  33. cout<<"Brisem cijelo stablo..."<<endl;
  34. deleteT(0,stablo);
  35. cout<<"Oznaka i prvo dijete(indeks u zagradi) korijena nakon brisanja:"<<labelT(rootT(stablo),stablo);
  36. cout<<"("<<firstchildT(0,stablo)<<")"<<endl;
  37. delete stablo;
  38. }
  39. void ophodjenje(){
  40. tree stablo=new tstablo;
  41. int izbor;
  42. cout<<"Inicijaliziram stablo s korijenom na indexu 0..."<<endl;
  43. initT(0,stablo);
  44. cout<<"Dodajem potomke(indeksi 4,5,6):"<<endl;
  45. createT(4,0,stablo);createT(5,0,stablo);createT(6,0,stablo);
  46. cout<<"Dodajem potomke( 4->2,3,13, 5->11,12 , 6->8,9 )"<<endl;
  47. createT(2,4,stablo);createT(3,4,stablo);createT(13,4,stablo);
  48. createT(11,5,stablo);createT(12,5,stablo);
  49. createT(8,6,stablo);createT(9,6,stablo);
  50. cout<<"Stablo:"<<endl;
  51. cout<<"Izaberite algoritam ophodjenja:\n----------"<<endl;
  52. cout<<"1-Preorder | 2-Inorder | 3-Postorder:";
  53. cin>>izbor;
  54. switch(izbor){
  55. case 1:
  56. Preorder(rootT(stablo),stablo);
  57. cout<<endl;
  58. system("pause");
  59. system("cls");
  60. break;
  61. case 2:
  62. Inorder(rootT(stablo),stablo);
  63. cout<<endl;
  64. system("pause");
  65. system("cls");
  66. break;
  67. case 3:
  68. Postorder(rootT(stablo),stablo);
  69. cout<<endl;
  70. system("pause");
  71. system("cls");
  72. break;
  73. }
  74. delete stablo;
  75. }
  76.  
  77. void binarno_stablo(){
  78. int izbor;
  79. btree stablo=new tbstablo;
  80. int x;
  81. cout<<"Unesi oznaku korijena:";
  82. cin>>x;
  83. initB(x,stablo);
  84.  
  85. cout<<"Kreiram stablo... "<<endl;
  86. cout<<"LEVEL 0 - korijen\n-------"<<endl;
  87. cout<<"Adresa korijena:"<<rootB(stablo)<<endl;
  88. cout<<"Oznaka korijena:"<<labelB(rootB(stablo),stablo)<<endl;
  89. cvor korijen=rootB(stablo);
  90. cout<<"LEVEL 1\n---------"<<endl;
  91. cout<<"Korijenu dodajem lijevi(oznaka 2) i desni(oznaka 3) cvor..."<<endl;
  92. createleftB(2,korijen,stablo);
  93. cvor ld1=leftchildB(korijen,stablo);
  94. createrightB(3,korijen,stablo);
  95. cvor rd1=rightchildB(korijen,stablo);
  96. cout<<"LEVEL 2\n---------"<<endl;
  97. cout<<"Lijevom dijetetu korijena dodajem lijevi(oznaka 4) i desni(oznaka 5) cvor..."<<endl;
  98. createleftB(4,ld1,stablo);
  99. cvor ld2=leftchildB(ld1,stablo);
  100. createrightB(5,ld1,stablo);
  101. cvor rd2=rightchildB(ld1,stablo);
  102. cout<<"Desnom dijetetu korijena dodajem samo desni cvor(oznaka 6)..."<<endl;
  103. createrightB(6,rd1,stablo);
  104. cvor rd3=rightchildB(rd1,stablo);
  105. cout<<"LEVEL 3\n------"<<endl;
  106. cout<<"Cvoru s oznakom 4 dodajem samo lijevi cvor(oznaka 7)..."<<endl;
  107. createleftB(7,ld2,stablo);
  108. cvor ld3=leftchildB(ld2,stablo);
  109. cout<<"Cvoru s oznakom 5 dodajem samo desni cvor(oznaka 8)"<<endl;
  110. createrightB(8,rd2,stablo);
  111. cvor rd4=rightchildB(rd2,stablo);
  112. int oznaka;
  113. cout<<"Oznaka lijevog dijeteta korijena:"<<labelB(leftchildB(rootB(stablo),stablo),stablo)<<endl;
  114. cout<<"Mijenjam oznaku korijena...Unesite oznaku:"<<endl;
  115. cin>>oznaka;
  116. changelabelB(oznaka,rootB(stablo),stablo);
  117. cout<<"Adresa roditelja cvora s oznakom 4:"<<parentB(ld2,stablo)<<endl;
  118. cout<<"Oznaka roditelja cvora s oznakom 4:"<<labelB(parentB(ld2,stablo),stablo)<<endl;
  119. cout<<"Brisem stablo od lijevog dijeteta korijena..."<<endl;
  120. deleteB(leftchildB(korijen,stablo),stablo);
  121. cout<<"Adresa lijevog dijeteta korijena(bitno u slucaju pok.)"<<leftchildB(korijen,stablo)<<endl;
  122. cout<<"Brisem stablo od desnog dijeteta korijena..."<<endl;
  123. deleteB(rightchildB(korijen,stablo),stablo);
  124. cout<<"Adresa desnog dijeteta korijena(bitno u slucaju pok.)"<<rightchildB(korijen,stablo)<<endl;
  125.  
  126. }
  127.  
  128. int main(){
  129.  
  130. int izbor;
  131. do{
  132. cout<<"[I Z B O R N I K]"<<endl;
  133. cout<<"----------------------------------------------"<<endl;
  134. cout<<"1. Opcenito stablo: prvo dijete - sljedeci brat"<<endl;
  135. cout<<"2. Algoritmi ophodjenja stabla"<<endl;
  136. cout<<"3. Binarno stablo"<<endl;
  137. cout<<"9.Izlaz"<<endl;
  138. cout<<"Odaberi opciju:";
  139. cin>>izbor;
  140. system("cls");
  141. switch(izbor)
  142. {
  143. case 1:
  144. opcenito_stablo();
  145. break;
  146. case 2:
  147. ophodjenje();
  148. break;
  149. case 3:
  150. binarno_stablo();
  151. break;
  152. case 4:
  153. break;
  154. case 9:cout<<"Izlaz!"<<endl;break;
  155. default:cout<<"Pogresan unos!"<<endl;
  156. }
  157.  
  158. }while(izbor!=9);
  159. system("pause");
  160. }

Report this snippet  

You need to login to post a comment.