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