Функција Инсерт се користи за додавање новог елемента у бинарно стабло претраге на одговарајућу локацију. Инсерт функција треба да буде дизајнирана на такав начин да чвор мора да наруши својство бинарног стабла претраге на свакој вредности.
- Доделите меморију за дрво.
- Подесите део података на вредност и поставите леви и десни показивач стабла, покажите на НУЛЛ.
- Ако ће ставка која ће бити уметнута бити први елемент стабла, онда ће лево и десно од овог чвора показивати на НУЛЛ.
- У супротном, проверите да ли је ставка мања од коренског елемента стабла, ако је то тачно, а затим рекурзивно извршите ову операцију са леве стране корена.
- Ако је ово нетачно, извршите ову операцију рекурзивно са десним подстаблом корена.
Убаци (ДРВО, СТАВКА)
Додели меморију за ДРВО
ПОСТАВИ ДРВО -> ПОДАЦИ = СТАВКА
ПОСТАВИ ДРВО -> ЛЕВО = ДРВО -> ДЕСНО = НУЛЛ
ЕЛСЕ
АКО ПОДАЦИ СТАВКЕ
Убаци (ДРВО -> ЛЕВО, СТАВКА)
ЕЛСЕ
Убаци (ДРВО -> ДЕСНО, СТАВКА)
[КРАЈ АКО]
[КРАЈ АКО]
Ц Функција
#include #include void insert(int); struct node { int data; struct node *left; struct node *right; }; struct node *root; void main () { int choice,item; do { printf(' Enter the item which you want to insert? '); scanf('%d',&item); insert(item); printf(' Press 0 to insert more ? '); scanf('%d',&choice); }while(choice == 0); } void insert(int item) { struct node *ptr, *parentptr , *nodeptr; ptr = (struct node *) malloc(sizeof (struct node)); if(ptr == NULL) { printf('can't insert'); } else { ptr -> data = item; ptr -> left = NULL; ptr -> right = NULL; if(root == NULL) { root = ptr; root -> left = NULL; root -> right = NULL; } else { parentptr = NULL; nodeptr = root; while(nodeptr != NULL) { parentptr = nodeptr; if(item data) { nodeptr = nodeptr -> left; } else { nodeptr = nodeptr -> right; } } if(item data) { parentptr -> left = ptr; } else { parentptr -> right = ptr; } } printf('Node Inserted'); } }
Излаз
Enter the item which you want to insert? 12 Node Inserted Press 0 to insert more ? 0 Enter the item which you want to insert? 23 Node Inserted Press 0 to insert more ? 1