Funkcija Insert se uporablja za dodajanje novega elementa v binarno iskalno drevo na ustrezno lokacijo. Funkcija vstavljanja mora biti oblikovana tako, da mora vozlišče pri vsaki vrednosti kršiti lastnost binarnega iskalnega drevesa.
- Dodelite pomnilnik drevesu.
- Nastavite podatkovni del na vrednost in nastavite levi in desni kazalec drevesa, kazalec na NULL.
- Če bo element, ki ga želite vstaviti, prvi element drevesa, bosta levo in desno od tega vozlišča kazala na NULL.
- V nasprotnem primeru preverite, ali je element manjši od korenskega elementa drevesa, če je to res, nato rekurzivno izvedite to operacijo z levo od korena.
- Če je to napačno, izvedite to operacijo rekurzivno z desnim poddrevesom korena.
Vstavi (DREVO, ELEMENT)
Dodeli pomnilnik za TREE
NASTAVI DREVO -> PODATKI = POSTAVKA
NASTAVI DREVO -> LEVO = DREVO -> DESNO = NULL
DRUGEGA
ČE PODATKI O PREDMETU
Vstavi (DREVO -> LEVO, ELEMENT)
DRUGEGA
Vstavi (DREVO -> DESNO, POSTAVKA)
[KONEC ČE]
[KONEC ČE]
C funkcija
#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'); } }
Izhod
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