1: private void removeNode(BinaryNode<T> nodeToRemove, BinaryNode<T> parentNode)
2: {
3: BinaryNode<T> childNode;
4:
5: if (nodeToRemove.hasLeftChild())
6: childNode = nodeToRemove.getLeftChild();
7: else
8: childNode = nodeToRemove.getRightChild();
9:
10: // Assertion: if nodeToRemove is a leaf, childNode is null
11: assert (nodeToRemove.isLeaf() && childNode == null) || !nodeToRemove.isLeaf();
12:
13: if (nodeToRemove == getRootNode())
14: setRootNode(childNode);
15: else if (parentNode.getLeftChild() == nodeToRemove)
16: parentNode.setLeftChild(childNode);
17: else
18: parentNode.setRightChild(childNode);
19: } // end removeNode
20: // Version 4.0