Guest User

Untitled

a guest
May 25th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. public class BSTree<T1 extends Comparable<T1>, T2> {
  2. private Node<T1, T2> root = null;
  3.  
  4. public boolean containsKey(T1 k) {
  5. Node<T1, T2> x = root;
  6. while (x != null) {
  7. int cmp = k.compareTo(x.key);
  8. if (cmp == 0) {
  9. return true;
  10. }
  11. if (cmp < 0) {
  12. x = x.left;
  13. } else {
  14. x = x.right;
  15. }
  16. }
  17. return false;
  18. }
  19.  
  20. public T2 get(T1 k) {
  21. Node<T1, T2> x = root;
  22. while (x != null) {
  23. int cmp = k.compareTo(x.key);
  24. if (cmp == 0) {
  25. return x.value;
  26. }
  27. if (cmp < 0) {
  28. x = x.left;
  29. } else {
  30. x = x.right;
  31. }
  32. }
  33. return null;
  34. }
  35.  
  36. public void add(T1 k, T2 v) {
  37. Node<T1, T2> x = root, y = null;
  38. while (x != null) {
  39. int cmp = k.compareTo(x.key);
  40. if (cmp == 0) {
  41. x.value = v;
  42. return;
  43. } else {
  44. y = x;
  45. if (cmp < 0) {
  46. x = x.left;
  47. } else {
  48. x = x.right;
  49. }
  50. }
  51. }
  52.  
  53. Node<T1, T2> newNode = new Node<T1, T2>(k, v);
  54. if (y == null) {
  55. root = newNode;
  56. } else {
  57. if (k.compareTo(y.key) < 0) {
  58. y.left = newNode;
  59. } else {
  60. y.right = newNode;
  61. }
  62. }
  63. }
  64.  
  65. public void remove(T1 k) {
  66. Node<T1, T2> x = root, y = null;
  67. while (x != null) {
  68. int cmp = k.compareTo(x.key);
  69. if (cmp == 0) {
  70. break;
  71. } else {
  72. y = x;
  73. if (cmp < 0) {
  74. x = x.left;
  75. } else {
  76. x = x.right;
  77. }
  78. }
  79. }
  80.  
  81. if (x == null) {
  82. return;
  83. }
  84. if (x.right == null) {
  85. if (y == null) {
  86. root = x.left;
  87. } else {
  88. if (x == y.left) {
  89. y.left = x.left;
  90. } else {
  91. y.right = x.left;
  92. }
  93. }
  94.  
  95. } else {
  96. Node<T1, T2> leftMost = x.right;
  97. y = null;
  98. while (leftMost.left != null) {
  99. y = leftMost;
  100. leftMost = leftMost.left;
  101. }
  102. if (y != null) {
  103. y.left = leftMost.right;
  104. } else {
  105. x.right = leftMost.right;
  106. }
  107. x.key = leftMost.key;
  108. x.value = leftMost.value;
  109. }
  110. }
  111. }
Add Comment
Please, Sign In to add comment