binarno stablo pomocu polja


/ 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 element{
  6. labeltype label;
  7. bool iskoristen;
  8. };
  9.  
  10. struct bs{
  11. element elementi[10000];
  12. };
  13.  
  14. typedef bs stablo;
  15. typedef int cvor;
  16.  
  17. cvor ParentB(cvor n, bs *stablo){
  18. if(n==1){
  19. return -1;
  20. }
  21. else return (int)(n/2);
  22. };
  23.  
  24. cvor LeftChildB(cvor n, bs *stablo){
  25. if(stablo->elementi[2*n].iskoristen){
  26. return 2*n;
  27. }
  28. else{
  29. cout<<"Nema lijevog djeteta.."<<endl;
  30. return(-1);
  31. }
  32. };
  33.  
  34. cvor RightChildB(cvor n, bs *stablo){
  35. if(stablo->elementi[2*n+1].iskoristen){
  36. return (2*n+1);
  37. }
  38. else{
  39. cout<<"Nema desnog djeteta..";
  40. return(-1);
  41. }
  42. };
  43.  
  44. labeltype LabelB(cvor n, bs *stablo){
  45. if(!stablo->elementi[n].iskoristen){
  46. cout<<"Nepostojeci cvor.."<<endl;
  47. return 0;
  48. }
  49. else return stablo->elementi[n].label;
  50. };
  51.  
  52. void ChangeLabelB(labeltype xy, cvor n, bs *stablo){
  53. if(stablo->elementi[n].iskoristen){
  54. stablo->elementi[n].label=xy;
  55. return;
  56. }
  57. else cout<<"Nepostojeci cvor.."<<endl;
  58. };
  59.  
  60. cvor RootB(bs *stablo){
  61. return 1;
  62. };
  63.  
  64. void CreateLeftB(labeltype xy,cvor n, bs *stablo){
  65. if(!stablo->elementi[2*n].iskoristen){
  66. stablo->elementi[2*n].label=xy;
  67. stablo->elementi[2*n].iskoristen=true;
  68. }
  69. else cout<<"Lijevo dijete vec postoji.."<<endl;
  70. };
  71.  
  72. void CreateRightB(labeltype xy,cvor n, bs *stablo){
  73. if (!stablo->elementi[2*n+1].iskoristen){
  74. stablo->elementi[2*n+1].label=xy;
  75. stablo->elementi[2*n+1].iskoristen=true;
  76. }
  77. else cout<<"Desno dijete vec postoji.."<<endl;
  78. };
  79.  
  80. void DeleteB(cvor n, bs *stablo){
  81. if(stablo->elementi[n*2].iskoristen) DeleteB(n*2, stablo);
  82. if(stablo->elementi[n*2+1].iskoristen) DeleteB(n*2+1, stablo);
  83. stablo->elementi[n].iskoristen=false;
  84. return ;
  85. };
  86.  
  87. void InitB(bs *stablo, labeltype xy){
  88. stablo->elementi[1].label=xy;
  89. stablo->elementi[1].iskoristen=true;
  90. stablo->elementi[0].iskoristen=false;
  91. for (int i=0; i<10000; i++)
  92. stablo->elementi[i].iskoristen=false;
  93. };

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.