Come rimuovere nodi da un albero binario

October 27

Come rimuovere nodi da un albero binario


alberi binari sono raccolte di "nodi" che sono collegati in una struttura che assomiglia ad un albero in cui ogni ramo ha due o meno percorsi. Un nodo è un blocco di memoria che contiene slot per informazioni più due "puntatori". Un puntatore è una slot machine che è solo abbastanza grande da contenere l'indirizzo di altri due nodi. Il primo nodo nell'albero è chiamato radice; esso contiene i puntatori ad altri due nodi, e ciascuno di questi ha puntatori ad altri due nodi, e così via fino a raggiungere un nodo "foglia" - un nodo che non contiene puntatori ad altri nodi.

istruzione

1 Ricerca per la foglia che si desidera rimuovere. Questa sarà una questione di guardare attraverso l'albero fino a trovare il nodo con l'indice corretto. Se l'albero è organizzato in modo tale che la sottostruttura di sinistra contiene tutti i record con un indice minore di numeri e il sottoalbero di destra contiene tutti i record con gli indici più grandi, si può andare a destra per la foglia che si desidera rimuovere. Se i nodi non sono in una sorta di ordine, in genere si deve guardare attraverso la metà dell'albero.

2 Tenere traccia di due puntatori. Gli indirizzi di record sono spesso chiamati puntatori perché "punto" che il record. Come si cerca per il record che si desidera eliminare, è necessario tenere traccia di due puntatori - quello che punta al record corrente e quella che punta al record precedente. Questo perché quando si trova il record di destinazione, è necessario fare una modifica a un indirizzo nel record precedente - l'indirizzo che punta al record che si desidera eliminare. Per effettuare questa modifica, è necessario disporre di un puntatore al record in cui si stanno facendo il cambiamento.

3 Modificare il puntatore per la foglia si sta rimuovendo ad un vuoto. Sarà inoltre necessario per restituire la memoria che veniva utilizzato per contenere il record foglia. Quando si crea l'albero, si deve richiedere un "nodo" per ogni record che si desidera aggiungere, e quando si elimina una foglia, è necessario restituire lo spazio che lo tenne. Il sistema operativo tiene traccia di allocazione di memoria e riciclaggio. Gli alberi crescono e si riducono in modo dinamico, come li si usa. Come si richiede nuovi nodi, nodi riciclare e persino gli indirizzi vuoti-out dipende dal linguaggio di programmazione che si sta utilizzando.

Consigli e avvertenze

  • Ricerca di un albero è molto più veloce se l'albero è "equilibrato" - se il sottoalbero sinistro e destro sono più o meno le stesse dimensioni. A volte gli alberi sono riequilibrati durante la notte per essere pronti per il giorno successivo.
  • Aggiornamento dei due puntatori può essere difficile. Entrambi i puntatori iniziano puntando alla radice. Al primo passo il puntatore "corrente" è avanzata, ma il puntatore "precedente" punta ancora alla radice. Da allora, alla fine di ogni passo, copiare la corrente del puntatore nel puntatore precedente e mettere il nuovo puntatore come puntatore corrente. Se non lo fai esattamente in questo modo, l'algoritmo non funziona.