1: // @author Frank M. Carrano, Timothy M. Henry
2: // @version 5.0
4: private T addEntry(T anEntry)
5: {
6: BinaryNode<T> currentNode = getRootNode();
7: // Assertion: currentNode != null
8: T result = null;
9: boolean found = false;
11: while (!found)
12: {
13: T currentEntry = currentNode.getData();
14: int comparison = anEntry.compareTo(currentEntry);
16: if (comparison == 0)
17: { // anEntry matches currentEntry;
18: // return and replace currentEntry
19: found = true;
20: result = currentEntry;
21: currentNode.setData(anEntry);
22: }
23: else if (comparison < 0)
24: {
25: if (currentNode.hasLeftChild())
26: currentNode = currentNode.getLeftChild();
27: else
28: {
29: found = true;
30: currentNode.setLeftChild(new BinaryNode<>(anEntry));
31: } // end if
32: }
33: else
34: {
35: // Assertion: comparison > 0
37: if (currentNode.hasRightChild())
38: currentNode = currentNode.getRightChild();
39: else
40: {
41: found = true;
42: currentNode.setRightChild(new BinaryNode<>(anEntry));
43: } // end if
44: } // end if
45: } // end while
47: return result;
48: } // end addEntry