Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private AVLNode<E> removeRecursive(E element, AVLNode<E> n) {
- if (n == null) {
- return null;
- }
- int cmp = c.compare(element, n.element);
- if (cmp < 0) {
- n.setLeft(removeRecursive(element, n.getLeft()));
- if (height(n.getRight()) - height(n.getLeft()) == 2) {
- if (height(n.getRight().getLeft()) > height(n.getRight().getRight())) {
- n = doubleLeftRotation(n);
- } else {
- n = leftRotation(n);
- }
- }
- } else if (cmp > 0) {
- n.setRight(removeRecursive(element, n.getRight()));
- if (height(n.getLeft()) - height(n.getRight()) == 2) {
- if (height(n.getLeft().getLeft()) > height(n.getLeft().getRight())) {
- n = rightRotation(n);
- } else {
- n = doubleRightRotation(n);
- }
- }
- } else if (n.getLeft() != null && n.getRight() != null) {
- n.element = ((AVLNode<E>) getMax(n.getLeft())).element;
- n.setLeft(removeRecursive(n.element, n.getLeft()));
- if (height(n.getRight()) - height(n.getLeft()) == 2) {
- if (height(n.getRight().getLeft()) > height(n.getRight().getRight())) {
- n = doubleLeftRotation(n);
- } else {
- n = leftRotation(n);
- }
- }
- } else {
- n = (n.getLeft() != null) ? n.getLeft() : n.getRight();
- size--;
- }
- if (n != null) {
- n.height = Math.max(height(n.getLeft()), height(n.getRight())) + 1;
- }
- return n;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement