Come Traverse binario Alberi in Java

June 4

alberi binari sono strutture di dati complessi utilizzati nei programmi per computer per memorizzare i dati in memoria utilizzando un algoritmo di storage comune. Utilizzando questo tipo di algoritmo, i dati possono essere memorizzati in un modello stabile, rendendo retrieving e ricercare dati più semplici. i programmatori Java che progettano alberi binari sono più che probabile algoritmi anche la progettazione di attraversare quelle strutture di dati. Ci sono tre modi per attraversare alberi binari: in ordine, il pre-ordine, e post-ordine.

istruzione

1 Traverse l'albero binario usando l'attraversamento in ordine. Supponendo che la classe "BT" rappresenta un albero binario, il codice seguente mostra come stampare l'albero in-ordine. Ogni nodo ha un puntatore sinistro e destro che punta ai nodi sinistro e destro del nodo corrente, insieme con un elemento di dati che rappresenta il valore. L'attraversamento in ordine attraverserà il nodo di sinistra prima fino a colpire nulla, e la stampa il nodo padre prima di attraversare a destra e ricominciare da capo. I mezzi che ogni nodo verrà stampato solo se tutti i suoi nodi figlio del lato sinistro sono stampati prima:

public class BT {

public void inOrder (Nodo x) {

if (x == null) {
ritorno; // Ferma ricorsione quando non c'è Nodo
}

inOrder (x.left); // Traverse sempre lasciato prima
stampa x.data; // Stampare i dati una volta i rendimenti dei nodi di sinistra
inOrder (x.right); // Traversare a destra
}

2 Attraversare l'albero in pre-ordine. Questo ordine è simile in ordine, tranne che la stampa del nodo viene prima di ogni attraversamento. Quindi, il nodo stamperà il suo valore, e poi traversare a sinistra. Poi, quando la ricorsione restituisce al nodo Dopo aver attraversato sinistra, il nodo poi attraversano destra. Ciò significa che il nodo stampa sempre stesso prima di qualsiasi nodi figli di stampa:

Preorder public void (Nodo x) {

if (x == null) {
ritorno; // Ferma ricorsione quando non c'è Nodo
}

stampa x.data; //stampare
inOrder (x.left); // Traversa a sinistra
inOrder (x.right); // Traversare a destra
}

3 Attraversare l'albero post-ordine. Ciò è l'opposto del attraversamento pre-ordine. Un nodo sarà sempre guardare ai suoi nodi sinistra o destra prima della stampa stessa, il che significa che tutti gli altri nodi figlio sotto di esso verranno stampati prima:

postorder public void (Nodo x) {

if (x == null) {
ritorno; // Ferma ricorsione quando non c'è Nodo
}

inOrder (x.left); // Traversa a sinistra
inOrder (x.right); // Traversare a destra
stampa x.data; //stampare
}