La funzione Inserisci viene utilizzata per aggiungere un nuovo elemento in un albero di ricerca binario nella posizione appropriata. La funzione di inserimento deve essere progettata in modo tale che il nodo debba violare la proprietà dell'albero di ricerca binario in corrispondenza di ciascun valore.
- Allocare la memoria per l'albero.
- Impostare la parte dati sul valore e impostare il puntatore sinistro e destro dell'albero su NULL.
- Se l'elemento da inserire sarà il primo elemento dell'albero, allora la sinistra e la destra di questo nodo punteranno a NULL.
- Altrimenti, controlla se l'elemento è inferiore all'elemento radice dell'albero, se questo è vero, esegui ricorsivamente questa operazione con la sinistra della radice.
- Se questo è falso, esegui questa operazione in modo ricorsivo con il sottoalbero destro della radice.
Inserisci (ALBERO, ARTICOLO)
Allocare memoria per TREE
IMPOSTA ALBERO -> DATI = ELEMENTO
IMPOSTA ALBERO -> SINISTRA = ALBERO -> DESTRA = NULL
ALTRO
SE DATI ARTICOLO
Inserisci(ALBERO -> SINISTRA, OGGETTO)
ALTRO
Inserisci(ALBERO -> DESTRA, OGGETTO)
[FINE SE]
[FINE SE]
Funzione 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'); } }
Produzione
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