Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. private AVLNode<E> removeRecursive(E element, AVLNode<E> n) {
  2. if (n == null) {
  3. return null;
  4. }
  5.  
  6. int cmp = c.compare(element, n.element);
  7.  
  8. if (cmp < 0) {
  9. n.setLeft(removeRecursive(element, n.getLeft()));
  10. if (height(n.getRight()) - height(n.getLeft()) == 2) {
  11. if (height(n.getRight().getLeft()) > height(n.getRight().getRight())) {
  12. n = doubleLeftRotation(n);
  13. } else {
  14. n = leftRotation(n);
  15. }
  16. }
  17. } else if (cmp > 0) {
  18. n.setRight(removeRecursive(element, n.getRight()));
  19. if (height(n.getLeft()) - height(n.getRight()) == 2) {
  20. if (height(n.getLeft().getLeft()) > height(n.getLeft().getRight())) {
  21. n = rightRotation(n);
  22. } else {
  23. n = doubleRightRotation(n);
  24. }
  25. }
  26. } else if (n.getLeft() != null && n.getRight() != null) {
  27. n.element = ((AVLNode<E>) getMax(n.getLeft())).element;
  28. n.setLeft(removeRecursive(n.element, n.getLeft()));
  29. if (height(n.getRight()) - height(n.getLeft()) == 2) {
  30. if (height(n.getRight().getLeft()) > height(n.getRight().getRight())) {
  31. n = doubleLeftRotation(n);
  32. } else {
  33. n = leftRotation(n);
  34. }
  35. }
  36. } else {
  37. n = (n.getLeft() != null) ? n.getLeft() : n.getRight();
  38. size--;
  39. }
  40. if (n != null) {
  41. n.height = Math.max(height(n.getLeft()), height(n.getRight())) + 1;
  42. }
  43. return n;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement