Funcția de inserare este utilizată pentru a adăuga un nou element într-un arbore de căutare binar în locația corespunzătoare. Funcția de inserare trebuie să fie proiectată în așa fel încât să încalce proprietatea arborelui de căutare binar la fiecare valoare.
- Alocați memorie pentru arbore.
- Setați partea de date la valoarea și setați indicatorul din stânga și din dreapta al arborelui, indicați spre NULL.
- Dacă elementul de inserat, va fi primul element al arborelui, atunci stânga și dreapta acestui nod vor indica NULL.
- În caz contrar, verificați dacă elementul este mai mic decât elementul rădăcină al arborelui, dacă acest lucru este adevărat, atunci efectuați recursiv această operație cu partea stângă a rădăcinii.
- Dacă acest lucru este fals, atunci efectuați această operație recursiv cu sub-arborele din dreapta al rădăcinii.
Inserare (ARBOC, ARTICOL)
Alocați memorie pentru TREE
SET TREE -> DATE = ARTICOL
SET TREE -> LEFT = TREE -> RIGHT = NULL
ALTE
DACA DATE ARTICOL
Inserare (ARBOC -> STÂNGA, ARTICOL)
ALTE
Inserați (ARBOC -> DREAPTA, ARTICOL)
[SFÂRȘITUL IF]
[SFÂRȘITUL IF]
Funcția C
#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'); } }
Ieșire
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