logo

Inserimento

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.

  1. Allocare la memoria per l'albero.
  2. Impostare la parte dati sul valore e impostare il puntatore sinistro e destro dell'albero su NULL.
  3. Se l'elemento da inserire sarà il primo elemento dell'albero, allora la sinistra e la destra di questo nodo punteranno a NULL.
  4. Altrimenti, controlla se l'elemento è inferiore all'elemento radice dell'albero, se questo è vero, esegui ricorsivamente questa operazione con la sinistra della radice.
  5. Se questo è falso, esegui questa operazione in modo ricorsivo con il sottoalbero destro della radice.

Inserisci (ALBERO, ARTICOLO)

    Passo 1:SE ALBERO = NULL
    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]Passo 2:FINE

inserimento nell'albero binario di ricerca

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