private E removeEntry(BinaryNode node, E entry, BinaryNode father) { E result = null; if (entry.compareTo(node.getData()) == 0) { result = node.getData(); decSize(); if (!hasLeft(node)) { // der er ikke et venstre barn if (node.equals(father.getLeft())) { father.setLeft(right(node)); } else { father.setRight(right(node)); } } else if (!hasRight(node)) { // der er ikke et højre barn if (node.equals(father.getLeft())) { father.setLeft(left(node)); } else { father.setRight(left(node)); } } else { // der er både højre og venstre barn} removeNodeTwoChildren(node); } } else if (entry.compareTo(node.getData()) < 0) { if (hasLeft(node)) removeEntry((BinaryNode) left(node), entry, node); } else { if (hasRight(node)) removeEntry((BinaryNode) right(node), entry, node); } return result; }