Exemplo n.º 1
0
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
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
	}
}
Exemplo n.º 4
0
void HashTable<DataType, KeyType>::insert(const DataType& newDataItem)
{
	int i = ( newDataItem.hash( newDataItem.getKey() ) % tableSize );
	dataTable[i].insert( newDataItem );

}