Ejemplo n.º 1
0
void InsertHelp(RBNode** Tree, RBNode* NewNode)
{
	if( (*Tree) == NULL)
		(*Tree) = NewNode;

	if( (*Tree)->Data < NewNode->Data)
	{
		if( (*Tree) ->Right == &Nil)
		{
			(*Tree) ->Right = NewNode;
			NewNode->Parent = (*Tree);
		}
		else
			InsertHelp(&(*Tree)->Right, NewNode);
	}

	else if((*Tree) ->Data > NewNode->Data)
	{
		if( (*Tree)->Left == &Nil)
		{
			(*Tree)->Left = NewNode;
			NewNode->Parent = (*Tree);
		}
		else
			InsertHelp(&(*Tree)->Left, NewNode);
	}
}
Ejemplo n.º 2
0
bool BST::InsertHelp(int e, BNode *&n) {
	#ifdef DEBUG
  cout << "InsertHelp got " << e << endl;
#endif
  BNode * next;
  if (e < n->data) {
    next = n->left; // check left side
  }
  else {
    next = n->right; // Check right side
  }

  if (next == NULL) {
    // Creating a New node
    BNode * nn = new BNode(e); // new returns a pointer
	if (e < n->data){ n->left = nn;
	}		
    else n->right = nn;
		cursor = nn;
    return true;
  }
  else {
    return	InsertHelp(e, next);
  }
}
Ejemplo n.º 3
0
void Insert(RBNode** Tree, RBNode* NewNode)
{
	InsertHelp(Tree, NewNode);

	NewNode->Color = Red;
	NewNode->Left = &Nil;
	NewNode->Right = &Nil;

	InsertAfter(Tree, NewNode);
}
Ejemplo n.º 4
0
bool BST::Insert(int e) {
  if (root == NULL){
    BNode * nn = new BNode(e); // BNode is type;	Declaring new value.
    root = nn;
    cursor = nn;
    return true;
  }
  return InsertHelp(e, root);

}