Source of 25.18.java


  1: private T addEntry(T newEntry)
  2: {
  3:    BinaryNode<T> currentNode = getRootNode();
  4:    assert currentNode != null;
  5:    T result = null;
  6:    boolean found = false;
  7: 
  8:    while (!found)
  9:    {
 10:       T currentEntry = currentNode.getData();
 11:       int comparison = newEntry.compareTo(currentEntry);
 12: 
 13:       if (comparison == 0)
 14:       {  // newEntry matches currentEntry;
 15:          // return and replace currentEntry
 16:          found = true;
 17:          result = currentEntry;
 18:          currentNode.setData(newEntry);
 19:       }
 20:       else if (comparison < 0)
 21:       {
 22:          if (currentNode.hasLeftChild())
 23:             currentNode = currentNode.getLeftChild();
 24:          else
 25:          {
 26:             found = true;
 27:             currentNode.setLeftChild(new BinaryNode<>(newEntry));
 28:          } // end if
 29:       }
 30:       else
 31:       {
 32:          assert comparison > 0;
 33: 
 34:          if (currentNode.hasRightChild())
 35:             currentNode = currentNode.getRightChild();
 36:          else
 37:          {
 38:             found = true;
 39:             currentNode.setRightChild(new BinaryNode<>(newEntry));
 40:          } // end if
 41:       } // end if
 42:    } // end while
 43: 
 44:    return result;
 45: } // end addEntry
 46: // Version 4.0