Funkce Vložit se používá k přidání nového prvku do binárního vyhledávacího stromu na vhodné místo. Funkce Insert má být navržena tak, aby uzel při každé hodnotě porušoval vlastnost binárního vyhledávacího stromu.
- Přidělte paměť stromu.
- Nastavte datovou část na hodnotu a nastavte levý a pravý ukazatel stromu, přejděte na NULL.
- Pokud bude položka, která má být vložena, prvním prvkem stromu, pak bude levá a pravá část tohoto uzlu ukazovat na NULL.
- Jinak zkontrolujte, zda je položka menší než kořenový prvek stromu, pokud je to pravda, pak rekurzivně proveďte tuto operaci s levou částí kořene.
- Pokud je to nepravda, proveďte tuto operaci rekurzivně s pravým podstromem kořene.
Vložit (STROMEČEK, POLOŽKA)
Přidělte paměť pro STROM
NASTAVIT STROM -> DATA = POLOŽKA
SET STROM -> LEFT = STROM -> RIGHT = NULL
JINÝ
POKUD DATA POLOŽKY
Vložit (STRM -> VLEVO, POLOŽKA)
JINÝ
Vložit (STRM -> VPRAVO, POLOŽKA)
[KONEC POKUD]
[KONEC POKUD]
C Funkce
#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ýstup
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