Funkcia vložiť sa používa na pridanie nového prvku do binárneho vyhľadávacieho stromu na vhodné miesto. Funkcia Insert má byť navrhnutá tak, aby pri každej hodnote uzol porušoval vlastnosť binárneho vyhľadávacieho stromu.
- Prideľte pamäť stromu.
- Nastavte dátovú časť na hodnotu a nastavte ľavý a pravý ukazovateľ stromu, ukážte na NULL.
- Ak položka, ktorá sa má vložiť, bude prvým prvkom stromu, ľavá a pravá časť tohto uzla bude ukazovať na NULL.
- V opačnom prípade skontrolujte, či je položka menšia ako koreňový prvok stromu, ak je to pravda, potom túto operáciu vykonajte rekurzívne s ľavou stranou od koreňa.
- Ak je to nepravda, vykonajte túto operáciu rekurzívne s pravým podstromom koreňa.
Vložiť (TREE, ITEM)
Prideľte pamäť pre STROM
NASTAVIŤ STROM -> ÚDAJE = POLOŽKA
SET STROM -> LEFT = STROM -> RIGHT = NULL
ELSE
AK ÚDAJE POLOŽKY
Vložiť(STROMEČ -> VĽAVO, POLOŽKA)
ELSE
Vložiť(STROMEČ -> VPRAVO, POLOŽKA)
[KONIEC AK]
[KONIEC AK]
Funkcia 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'); } }
Výkon
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