Posted By

sara on 01/05/11


Tagged

sp btree zadatak4


Versions (?)

main.cpp


 / Published in: C++
 

  1. #include <iostream>
  2. #include <ctime>
  3. using namespace std;
  4.  
  5. #define RANDNUM 1000
  6.  
  7. //#include "bstablo_polje.h"
  8. #include "bstablo_pokazivaci.h"
  9.  
  10.  
  11. int main(){
  12. int i;
  13. srand ( time(0) );
  14.  
  15. labeltype polje[RANDNUM], broj;
  16. for (i=0; i<RANDNUM; i++){
  17. polje[i] = 1 + rand()%RANDNUM;
  18. cout <<polje[i];
  19. if (i<RANDNUM-1)
  20. cout <<", ";
  21. }
  22. cout <<endl;
  23.  
  24. //popunjavanje binarnog stabla nasumicnim brojevima iz polja
  25.  
  26. btree bstablo;
  27.  
  28. bstablo = InitB(polje[0]);
  29. node n = Null;
  30. node nc = Null;
  31. labeltype label = 0;
  32. for (i=1; i<RANDNUM; i++){
  33. n = RootB(bstablo);
  34.  
  35. while(1){
  36. label = LabelB(n, bstablo);
  37. if (polje[i]<=label){
  38. nc = LeftChildB(n, bstablo);
  39. }else{
  40. nc = RightChildB(n, bstablo);
  41. }
  42. if (nc == Null){
  43. if (polje[i]<=label){
  44. CreateLeftB(polje[i], n, bstablo);
  45. break;
  46. }else{
  47. CreateRightB(polje[i], n, bstablo);
  48. break;
  49. }
  50. }else
  51. n = nc;
  52. }
  53. }
  54. cout <<endl;
  55.  
  56. cout <<"Unesite broj koji zelite pretraziti u binarnom stablu: ";
  57. cin >>broj;
  58.  
  59. n = RootB(bstablo);
  60. while(1){
  61. label = LabelB(n, bstablo);
  62. if (broj<label){
  63. nc = LeftChildB(n, bstablo);
  64. }else if (broj>label){
  65. nc = RightChildB(n, bstablo);
  66. }else if (broj == label){
  67. cout <<"Broj je pronadjen u binarnom stablu na poziciji "<<n<<": "<<label<<endl;
  68. break;
  69. }
  70. if (nc == Null){
  71. cout <<"Broj nije pronadjen u binarnom stablu!"<<endl;
  72. break;
  73. }else
  74. n = nc;
  75. }
  76.  
  77.  
  78. system("pause");
  79. return 0;
  80. }

Report this snippet  

You need to login to post a comment.