Guest User

Untitled

a guest
Jul 19th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. struct element{
  2. int label;
  3. int used;
  4. };
  5.  
  6. struct bt{
  7. element elements[10000];
  8. };
  9.  
  10. typedef int node;
  11.  
  12. bt* InitB(int x, bt* T){
  13. if(T) delete T;
  14. T = new bt;
  15. for(int i = 0; i < 10000; i++)
  16. T->elements[i].used = 0;
  17. T->elements[1].label = x;
  18. T->elements[1].used = 1;
  19. return T;
  20. }
  21.  
  22. void CreateLeftB(int x, node n, bt* T){
  23. if(T->elements[n].used == 0 || T->elements[2*n].used == 1) {
  24. cout << "Greska" << endl << endl;
  25. return;
  26. }
  27. T->elements[2*n].used = 1;
  28. T->elements[2*n].label = x;
  29. }
  30.  
  31. void CreateRightB(int x, node n, bt* T){
  32. if(T->elements[n].used == 0 || T->elements[2*n+1].used == 1){
  33. cout << "Greska" << endl << endl;
  34. return;
  35. }
  36. T->elements[2*n+1].used = 1;
  37. T->elements[2*n+1].label = x;
  38. }
  39.  
  40. node LeftChildB(node n, bt* T){
  41. if(T->elements[n].used == 0)
  42. return 0;
  43. if(T->elements[2*n].used == 1)
  44. return 2*n;
  45. else return 0;
  46. }
  47.  
  48. node RightChildB(node n, bt* T){
  49. if(T->elements[n].used == 0) return 0;
  50. if(T->elements[2*n+1].used == 1) return 2*n+1;
  51. else return 0;
  52. }
  53.  
  54. node ParentB(node n, bt* T){
  55. if(n == 1) return 0;
  56. if(n%2) n--;
  57. return n/2;
  58. }
  59.  
  60. int LabelB(node n, bt* T){
  61. return T->elements[n].label;
  62. }
  63.  
  64. void ChangeLabelB(int x, node n, bt* T){
  65. if(T->elements[n].used == 0) return;
  66. T->elements[n].label = x;
  67. }
  68.  
  69. node RootB(bt* T){
  70. if(T->elements[1].used == 0) return 0;
  71. return 1;
  72. }
  73.  
  74. void DeleteB(node n, bt* T){
  75. T->elements[n].used = 0;
  76. if (LeftChildB(n, T)) DeleteB(LeftChildB(n, T), T);
  77. if (RightChildB(n, T)) DeleteB(RightChildB(n, T), T);
  78. }
Add Comment
Please, Sign In to add comment