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;
  }