Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> Java Programming >> .

Come attraversare alberi binari in Java

alberi binari sono strutture complesse di dati utilizzati nei programmi per computer per memorizzare i dati in memoria utilizzando un algoritmo di memoria comune. Utilizzando questo tipo di algoritmo , i dati possono essere memorizzati in un modello stabile , rendendo il recupero e la ricerca attraverso dati più facile. Programmatori Java che progettano alberi binari sono più che probabile anche la progettazione di algoritmi di attraversare quelle strutture di dati . Ci sono tre modi per attraversare alberi binari : in ordine , il pre-ordine , e post- ordine . Cose che ti serviranno
Java Development Kit ( JDK ) per l'editor di testo
Show More Istruzioni
1

attraversare l'albero binario utilizzando in ordine di attraversamento . 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 si riferisce ai nodi sinistro e destro del nodo corrente , insieme con un elemento di dati che rappresenta il suo valore . L' in -ordine sarà attraversare il nodo di sinistra prima fino a colpire nulla , e la stampa nodo del genitore prima di attraversare a destra e ricominciare da capo . L' significa che ogni nodo viene stampata solo se tutti i suoi nodi figlio del lato sinistro sono stampati prima :

public class BT {

public void inOrder (Nodo x ) {

if ( x == null) { return; //ricorsione si ferma quando non c'è nodo }

inOrder ( x.left ) ; //sempre traversare a sinistra firstprint x.data ; //stampare i dati una volta il returnsinOrder nodo sinistro ( x.right ) ; //traverse a destra }
2

attraversare l'albero in pre- ordine . Questo ordine è simile a in-order , tranne che la stampa del nodo viene prima di ogni attraversamento . Quindi , il nodo viene stampato il suo valore , e poi attraversare a sinistra . Poi , quando la ricorsione ritorna al nodo dopo aver attraversato sinistra , il nodo verrà poi traversare a destra . Ciò significa che il nodo stamperà sempre se stessa prima di ogni bambino nodi stampa :

public void Preorder (Nodo x ) {

if ( x == null) { return; //ferma la ricorsione quando non vi è alcun nodo }

stampa x.data ; //printinOrder ( x.left ) ; //traverse leftinOrder ( x.right ) ; //traversa a destra }
3

attraversare l'albero di post- ordine . Questo è l' opposto del pre -ordine . Un nodo cercherà sempre per i suoi nodi di sinistra o di destra prima della stampa stessa, il che significa che tutti gli altri nodi figlio sotto di esso verranno stampati prima :

public void postorder (Nodo x ) {

se ( x == null) { return; //ricorsione si ferma quando non c'è nodo }

inOrder ( x.left ) ; //traverse leftinOrder ( x.right ) ; //traverse rightprint x.data ; //print}

 

Programmazione © www.354353.com