1: // Adds newEntry to the nonempty subtree rooted at rootNode. 2: private T addEntry(BinaryNode<T> rootNode, T newEntry) 3: { 4: assert rootNode != null; 5: T result = null; 6: int comparison = newEntry.compareTo(rootNode.getData()); 7: 8: if (comparison == 0) 9: { 10: result = rootNode.getData(); 11: rootNode.setData(newEntry); 12: } 13: else if (comparison < 0) 14: { 15: if (rootNode.hasLeftChild()) 16: result = addEntry(rootNode.getLeftChild(), newEntry); 17: else 18: rootNode.setLeftChild(new BinaryNode<>(newEntry)); 19: } 20: else 21: { 22: assert comparison > 0; 23: 24: if (rootNode.hasRightChild()) 25: result = addEntry(rootNode.getRightChild(), newEntry); 26: else 27: rootNode.setRightChild(new BinaryNode<>(newEntry)); 28: } // end if 29: 30: return result; 31: } // end addEntry 32: // Version 4.0