Guest User

Untitled

a guest
Jul 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. typedef int TIP;
  2. class bTree
  3. {
  4. public:
  5. TIP vrij;
  6. bTree *l, *r;
  7.  
  8. bTree()
  9. {
  10. l = r = NULL;
  11. //kad se stvori novi cvor, adrese *l i *r se postavljaju na NULL
  12. }
  13. }; //class bTree
  14.  
  15.  
  16. bTree* LeftChildB(bTree *n)
  17. {
  18. return n->l;
  19. } ////bTree ParentB(bTree *n, bTree *node)
  20.  
  21.  
  22. bTree* RightChildB(bTree *n)
  23. {
  24. return n->r;
  25. } //bTree RightChildB(bTree *n)
  26.  
  27.  
  28. bTree* ParentB(bTree *n, bTree *node)
  29. {
  30. if(n == node) return NULL;
  31.  
  32. if(LeftChildB(node) == n) return node;
  33. if(RightChildB(node) == n) return node;
  34.  
  35. bTree *rez = NULL;
  36. if(LeftChildB(node) != NULL) rez = ParentB(n, LeftChildB(node));
  37. if(rez != NULL) return rez;
  38.  
  39. if(RightChildB(node) != NULL) rez = ParentB(n, RightChildB(node));
  40. if(rez != NULL) return rez;
  41.  
  42. return NULL;
  43. } //bTree ParentB(bTree *n, bTree *node)
  44.  
  45.  
  46. TIP LabelB(bTree *n)
  47. {
  48. return n->vrij;
  49. } //TIP LabelB(bTree *n)
  50.  
  51.  
  52. void ChangeLabelB(TIP x, bTree *n)
  53. {
  54. n->vrij = x;
  55. } //TIP ChangeLabelB(TIP x, bTree *n)
  56.  
  57.  
  58. bTree* RootB(bTree *T)
  59. {
  60. return T;
  61. } //bTree RootB(bTree *T)
  62.  
  63.  
  64. int CreateLeftB(TIP x, bTree *n)
  65. {
  66. if(LeftChildB(n) != NULL) return 0;
  67. bTree *novi = new bTree;
  68. novi->vrij = x;
  69. n->l = novi;
  70.  
  71. return 1;
  72. } //int CreateLeftB(TIP x, bTree *n)
  73.  
  74.  
  75. int CreateRightB(TIP x, bTree *n)
  76. {
  77. if(RightChildB(n) != NULL) return 0;
  78. bTree *novi = new bTree;
  79. novi->vrij = x;
  80. n->r = novi;
  81.  
  82. return 1;
  83. } //int CreateRightB(TIP x, bTree *n)
  84.  
  85.  
  86. void DeleteBpom(bTree *node)
  87. {
  88. if(LeftChildB(node) != NULL) DeleteBpom(LeftChildB(node));
  89. if(RightChildB(node) != NULL) DeleteBpom(RightChildB(node));
  90. delete node;
  91. } //void DeleteBpom(bTree *node)
  92.  
  93.  
  94. int DeleteB(bTree *n, bTree *T)
  95. {
  96. if(n != T)
  97. {
  98. bTree *rod = ParentB(n, T);
  99. if(rod == NULL) return 0;
  100.  
  101. DeleteBpom(n);
  102. if(LeftChildB(rod) == n) rod->l = NULL;
  103. else if(RightChildB(rod) == n) rod->r = NULL;
  104.  
  105. return 1;
  106. }else
  107. {
  108. DeleteBpom(T);
  109. return 1;
  110. }
  111. } //int DeleteB(bTree *n, bTree *T)
  112.  
  113.  
  114. bTree* InitB(TIP x)
  115. {
  116. bTree *novi = new bTree;
  117. novi->vrij = x;
  118. return novi;
  119. } //bTree InitB(TIP x)
Add Comment
Please, Sign In to add comment