De invoegfunctie wordt gebruikt om een nieuw element toe te voegen aan een binaire zoekboom op de juiste locatie. De invoegfunctie moet zo worden ontworpen dat deze bij elke waarde de eigenschap van de binaire zoekboom moet schenden.
- Wijs het geheugen toe aan de boom.
- Stel het gegevensgedeelte in op de waarde en stel de linker- en rechteraanwijzer van de boom in, wijs naar NULL.
- Als het in te voegen item het eerste element van de boom zal zijn, zullen de linker- en rechterkant van dit knooppunt naar NULL wijzen.
- Controleer anders of het item kleiner is dan het wortelelement van de boom. Als dit waar is, voer deze bewerking dan recursief uit met de linkerkant van de wortel.
- Als dit niet waar is, voer deze bewerking dan recursief uit met de rechter subboom van de root.
Invoegen (BOOM, ITEM)
Wijs geheugen toe voor TREE
BOOM INSTELLEN -> GEGEVENS = ITEM
ZET BOOM IN -> LINKS = BOOM -> RECHTS = NUL
ANDERS
ALS ARTIKELGEGEVENS
Invoegen(BOOM -> LINKS, ITEM)
ANDERS
Invoegen(BOOM -> RECHTS, ITEM)
[EIND VAN ALS]
[EIND VAN ALS]
C-functie
#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'); } }
Uitvoer
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