Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. Iteratorius:
  2. private class IteratorKTU implements Iterator<E> {
  3.  
  4. private Stack<BstNode<E>> stack = new Stack<>();
  5. // Nurodo iteravimo kolekcija kryptį, true - didėjimo tvarka, false - mažėjimo
  6. private boolean ascending;
  7. // Nurodo einamojo medžio elemento tėvą. Reikalingas šalinimui.
  8. private BstNode<E> parent = root;
  9.  
  10.  
  11. IteratorKTU(boolean ascendingOrder) {
  12. this.ascending = ascendingOrder;
  13. this.toStack(root);
  14. }
  15.  
  16. @Override
  17. public boolean hasNext() {
  18. return !stack.empty();
  19. }
  20.  
  21. @Override
  22. public E next() {
  23. if (!stack.empty()) {
  24. // Grąžinamas paskutinis į steką patalpintas elementas
  25. BstNode<E> n = stack.pop();
  26. // Atsimenama tėvo viršunė. Reikia remove() metodui
  27. parent = (!stack.empty()) ? stack.peek() : root;
  28. BstNode node = (ascending) ? n.right : n.left;
  29. // Dešiniajame n pomedyje ieškoma minimalaus elemento,
  30. // o visi paieškos kelyje esantys elementai talpinami į steką
  31. toStack(node);
  32. return n.element;
  33. } else { // Jei stekas tuščias
  34. return null;
  35. }
  36. }
  37.  
  38.  
  39. @Override
  40. public void remove(){
  41. if(!stack.empty())
  42. {
  43. // pašalinamas elementas
  44. stack.pop();
  45. //pakeiciama rodyklė
  46. parent = (!stack.empty()) ? stack.peek() : root;
  47. }
  48. else
  49. {
  50. parent = null;
  51. }
  52. }
  53.  
  54. private void toStack(BstNode<E> n) {
  55. while (n != null) {
  56. stack.push(n);
  57. n = (ascending) ? n.left : n.right;
  58. }
  59. }
  60. }
  61.  
  62. /// RetainAll metodas
  63. public boolean retainAll(BstSetKTU<?> c)
  64. {
  65. boolean T = false;
  66. Iterator<E> it = this.iterator();
  67. Object[] Array = c.toArray();
  68. while(T != true)
  69. {
  70. for (int i = 0; i < Array.length; i++) {
  71. if(!it.equals(Array[i]))
  72. {
  73. remove(it.next());
  74. }
  75. }
  76. if(!it.hasNext())
  77. {
  78. T = true;
  79. }
  80. }
  81. return T;
  82.  
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement