Guest User

Untitled

a guest
Jul 20th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct cvor
  5. {
  6. int oznaka;
  7. int PrvoDijete;
  8. int SljedeciBrat;
  9. bool koristeno;
  10. };
  11.  
  12. struct tree
  13. {
  14. cvor element[1000];
  15. int first;
  16. };
  17.  
  18. int pom;
  19. bool nadjen = false;
  20.  
  21. int ParentB(int x, tree *stablo)
  22. {
  23. if(x == stablo->first)
  24. {
  25. nadjen = true;
  26. return -1;
  27. };
  28. for(int i=0; i<10000; i++)
  29. {
  30. if(stablo->element[i].PrvoDijete==n && stablo->element[i].koristeno == true)
  31. {
  32. nadjen = true;
  33. cout << "Roditelj cvora: " << i << endl;
  34. return i;
  35. }
  36. else if(stablo->element[i].SljedeciBrat==n && stablo->element[i].koristeno == true)
  37. {
  38. ParentB(i,stablo);
  39. };
  40. };
  41. if(nadjen == false)
  42. {
  43. cout << "Nije nadjen (ili ste unijeli korijen)!" << endl;
  44. return -1;
  45. }
  46. }
  47.  
  48. int FirstChildB(int x, tree *stablo)
  49. {
  50. if(x<0) return -1;
  51. else
  52. {
  53. if(x>=0 && ((x+1)!=0)) return stablo->element[x].PrvoDijete;
  54. else return -1;
  55. }
  56. }
  57.  
  58. int NextSiblingB(int x, tree *stablo)
  59. {
  60. if(x<0) return -1;
  61. else
  62. {
  63. if(stablo->element[x].SljedeciBrat!=-1)return stablo->element[x].SljedeciBrat;
  64. else return -1;
  65. }
  66. }
  67.  
  68. int LabelB(int x, tree *stablo)
  69. {
  70. if(x<0) cout<<"Error"<<endl;
  71. else
  72. {
  73. if(stablo->element[x].oznaka!=-1) return -1;
  74. else return stablo->element[x].oznaka;
  75. }
  76. }
  77.  
  78. int RootB(tree *stablo)
  79. {
  80. return stablo->element[0].oznaka;
  81. }
  82.  
  83. void CreateB(int x, int y, tree *stablo)
  84. {
  85. int i;
  86. if(stablo->element[y].PrvoDijete==-1)
  87. {
  88. stablo->element[y].PrvoDijete=x;
  89. stablo->element[x].PrvoDijete=-1;
  90. stablo->element[x].SljedeciBrat=-1;
  91. stablo->element[x].koristeno = true;
  92. cout << "Label: ";
  93. cin >> stablo->element[x].oznaka;
  94. }
  95. else
  96. {
  97. i=stablo->element[y].PrvoDijete;
  98. while(stablo->element[i].SljedeciBrat!=-1)
  99. {
  100. i=stablo->element[i].SljedeciBrat;
  101. };
  102. stablo->element[i].SljedeciBrat=x;
  103. stablo->element[x].PrvoDijete=-1;
  104. stablo->element[x].SljedeciBrat=-1;
  105. stablo->element[x].koristeno = true;
  106. cout << "Label: ";
  107. cin >> stablo->element[x].label;
  108. };
  109. };
  110.  
  111. int ChangeLabelB(int x, int y, tree *stablo)
  112. {
  113. if(x<0) return -1;
  114. else stablo->element[y].oznaka=x;
  115. }
  116.  
  117. int DeleteB(int x, tree *stablo)
  118. {
  119. if(x<0) return -1;
  120. else
  121. {
  122. if(stablo->element[x].PrvoDijete>0) DeleteB(stablo->element[x].PrvoDijete,stablo);
  123. else
  124. {
  125. stablo->element[x].oznaka=-1;
  126. stablo->first--;
  127. }
  128. }
  129. }
  130.  
  131. tree *InitB(int x,tree *stablo)
  132. {
  133. delete [] stablo->element;
  134. stablo=new tree;
  135. stablo->first=0;
  136. stablo->element[x].oznaka=x;
  137. stablo->first++;
  138. stablo->element[x].koristeno = true;
  139. }
Add Comment
Please, Sign In to add comment