Advertisement
Guest User

Untitled

a guest
Feb 18th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. import java.util.List;
  2. import java.util.Optional;
  3. import java.util.ArrayList;
  4.  
  5.  
  6.  
  7.  
  8. class BinaryTree implements BinaryTreeInterface {
  9.  
  10. Node root;
  11. public boolean add(int value){
  12. Node newNode = new Node(value);
  13. Node tmpnode=root;
  14. if (root ==null){
  15. root = newNode;
  16. return true;
  17. }
  18. else
  19. while (true){
  20. if (root.getValue()==value)
  21. return false;
  22. if(tmpnode.nextLeft(value)){
  23. if (tmpnode.getValue()==value)
  24. return false;
  25. if(tmpnode.isLeaf())
  26. newNode.setLeft(tmpnode);
  27. return true;
  28. }
  29. else{
  30. if (tmpnode.getValue()==value)
  31. return false;
  32. if(tmpnode.isLeaf())
  33. newNode.setRight(tmpnode);
  34. return true;
  35.  
  36. }
  37. }
  38.  
  39.  
  40. }
  41.  
  42.  
  43. public Node getRoot(){
  44.  
  45. return root;
  46. }
  47.  
  48. public Optional<List<Integer>> getPathTo(int value){
  49. List<Integer> list= new ArrayList<>();
  50. Optional<List<Integer>> op=Optional.ofNullable(list);
  51. list.add(root.getValue());
  52. Node tmpnode=root;
  53.  
  54. while(tmpnode.isLeaf()==false){
  55. if(tmpnode.getValue()==value)
  56. return op;
  57. if(tmpnode.nextLeft(value)){
  58. list.add(tmpnode.getValue());
  59. tmpnode.getLeft();
  60. }
  61. else{
  62. list.add(tmpnode.getValue());
  63. tmpnode.getRight();
  64. }
  65.  
  66. }
  67.  
  68. return op;
  69.  
  70. }
  71.  
  72.  
  73.  
  74. }
  75.  
  76.  
  77. public class Node {
  78. private Node left;
  79. private Node right;
  80. private final int value;
  81.  
  82. /**
  83. * Konstruktor klasy Node - odpowiada za ustawienie wartosci wezla.
  84. *
  85. * @param value
  86. * wartosc wezla
  87. */
  88. public Node(int value) {
  89. this.value = value;
  90. }
  91.  
  92. /**
  93. * Metoda zwraca wartosc zapisana w wezle.
  94. *
  95. * @return wartosc wezla
  96. */
  97. public int getValue() {
  98. return value;
  99. }
  100.  
  101. /**
  102. * Metoda zwraca lewe poddrzewo lub null, jesli go nie ma.
  103. *
  104. * @return lewe poddrzewo lub null, jesli go nie ma
  105. */
  106. public Node getLeft() {
  107. return left;
  108. }
  109.  
  110. /**
  111. * Metoda zwraca prawe poddrzewo lub null, jesli go nie ma.
  112. *
  113. * @return prawe poddrzewo lub null, jesli go nie ma.
  114. */
  115. public Node getRight() {
  116. return right;
  117. }
  118.  
  119. /**
  120. * Metoda pozwala sprawdzic czy dany wezel jest lisciem, czyli nie ma zadnego
  121. * podlaczonego poddrzewa.
  122. *
  123. * @return true - wezel jest lisciem
  124. */
  125. public boolean isLeaf() {
  126. return (left == null) && (right == null);
  127. }
  128.  
  129. /**
  130. * Metoda sprawdza czy poszukiwana wartosc value powinno szukac sie w lewym
  131. * poddrzewie. Metoda nie prawdzi poszukiwania.
  132. *
  133. * @param value
  134. * poszukiwana wartsc
  135. * @return true - wartosci value nalezy szukac w lewym poddrzewie
  136. */
  137. public boolean nextLeft(int value) {
  138. if (value < this.value)
  139. return true;
  140. return false;
  141. }
  142.  
  143. /**
  144. * Metoda sprawdza czy poszukiwana wartosc value powinno szukac sie w prawym
  145. * poddrzewie. Metoda nie prawdzi poszukiwania.
  146. *
  147. * @param value
  148. * poszukiwana wartsc
  149. * @return true - wartosci value nalezy szukac w prawym poddrzewie
  150. */
  151. public boolean nextRight(int value) {
  152. if (value > this.value)
  153. return true;
  154. return false;
  155. }
  156.  
  157. /**
  158. * Metoda dowiazuje lewy-wezel.
  159. *
  160. * @param node
  161. * dolaczany wezel
  162. */
  163. public void setLeft(Node node) {
  164. left = node;
  165. }
  166.  
  167. /**
  168. * Metoda dowiazuje prawy-wezel.
  169. *
  170. * @param node
  171. * dolaczany wezel
  172. */
  173. public void setRight(Node node) {
  174. right = node;
  175. }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement