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); } }
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); } }
void Insert(RBNode** Tree, RBNode* NewNode) { InsertHelp(Tree, NewNode); NewNode->Color = Red; NewNode->Left = &Nil; NewNode->Right = &Nil; InsertAfter(Tree, NewNode); }
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); }