void BSTree<DataType,KeyType>:: insertHelper ( BSTreeNode *&p, const DataType &newDataItem ) // Recursive helper function for insert. Inserts newDataItem in // the subtree pointed to by p. { if ( p == 0 ) // Insert p = new BSTreeNode(newDataItem,0,0); else if ( newDataItem.getKey() < p->dataItem.getKey() ) insertHelper(p->left, newDataItem); // Search left else if ( newDataItem.getKey() > p->dataItem.getKey() ) insertHelper(p->right, newDataItem); // Search right else p->dataItem = newDataItem; // Update }
void BSTree<DataType, KeyType>::insertHelper( BSTreeNode* &ptr, const DataType& newDataItem) { if(ptr == NULL) { ptr = new BSTreeNode(newDataItem, NULL, NULL); return; } if(ptr->dataItem.getKey() > newDataItem.getKey()) { insertHelper(ptr->left, newDataItem); return; } if(ptr->dataItem.getKey() < newDataItem.getKey()) { insertHelper(ptr->right, newDataItem); return; } return; }
void BSTree<DataType, KeyType>::insertHelper(BSTreeNode*& p, const DataType& newDataItem) { // If ptr is NULL, create a new node and break if(p == NULL) { p = new BSTreeNode(newDataItem, NULL, NULL); return; } // If ptr data is greater than value, go down left tree if(p->dataItem.getKey() > newDataItem.getKey()) { insertHelper(p->left, newDataItem); } else if(p->dataItem.getKey() < newDataItem.getKey()) // If ptr data is less than value, go down right tree { insertHelper(p->right, newDataItem); } else // If ptr data is equal to value, update data item with new DataItem; ie, don't do anything { p->dataItem = newDataItem; } }
void HashTable<DataType, KeyType>::insert(const DataType& newDataItem) { int i = ( newDataItem.hash( newDataItem.getKey() ) % tableSize ); dataTable[i].insert( newDataItem ); }