La funció d'inserció s'utilitza per afegir un element nou a un arbre de cerca binari a la ubicació adequada. La funció d'inserció s'ha de dissenyar de tal manera que el node ha de violar la propietat de l'arbre de cerca binari a cada valor.
- Assigna la memòria per a l'arbre.
- Estableix la part de dades al valor i estableix el punter esquerre i dret de l'arbre, apunta a NULL.
- Si l'element a inserir serà el primer element de l'arbre, llavors l'esquerra i la dreta d'aquest node apuntaran a NULL.
- En cas contrari, comproveu si l'element és inferior a l'element arrel de l'arbre, si això és cert, feu aquesta operació recursivament amb l'esquerra de l'arrel.
- Si això és fals, feu aquesta operació de forma recursiva amb el subarbre dret de l'arrel.
Insereix (ARBRE, ARTICLE)
Assignar memòria per a TREE
SET ARBRE -> DADES = ELEMENT
SET ARBRE -> ESQUERRA = ARBRE -> DRET = NULL
ALTRES
SI DADES DE L'ART
Insereix (ARBRE -> ESQUERRA, ELEMENT)
ALTRES
Insereix (ARBRE -> DRET, ARTICLE)
[FI DE SI]
[FI DE SI]
Funció 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'); } }
Sortida
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