Come fare Preorder Traversal in albero binario in Java

April 12

Per fare un "attraversamento" di un albero binario in Java significa fare un trattamento algoritmica dei nodi in una sorta di ordine. Un attraversamento "preorder" significa che il nodo radice viene elaborato per primo, e poi il resto dei nodi dell'albero vengono elaborati in modo ricorsivo. La funzione di attraversamento sarà sufficiente stampare ogni nodo si visita alla console.

istruzione

1 Creare un semplice binario classe di ricerca albero che ha un costruttore di base che inizializza il valore del nodo. Sono inclusi anche dovrebbe essere un metodo di inserimento per attraversare un albero e creare un nuovo nodo nella posizione corretta.
""public class BinaryTree {
BinaryTree left;
BinaryTree right;
int value;

public BinaryTree(int v) {
value = v;
}

// Insert a value into the tree
public void insert(int v) {
if(v < value) {
if(left == null)
left = new BinaryTree(v);
else
left.insert(v);
}

else if(v > value) {
if(right == null)
right = new BinaryTree(v);
else
right.insert(v);
}
}
}""

2 Costruire il nodo radice dell'albero binario, assegnandogli un valore che è vicino alla media del degli oggetti sarai l'archiviazione. Ciò garantirà l'efficienza, poiché il vostro albero binario deve essere abbastanza equilibrato. Se stai memorizzare una distribuzione di numeri da 1 a 100, per esempio, 50 è un buon valore per il nodo radice. ""BinaryTree b = new BinaryTree(50);""

3 Inserire i nodi contro l'albero in un ordine particolare. L'albero binario non è auto-bilanciamento, quindi inserendo nodi in un ordine specifico aiuta a mantenere l'equilibrio. Qui i nodi sono posto per fare un albero breve ed efficiente equilibrata. ""b.insert(20);
b.insert(40);
b.insert(10);
b.insert(5);
b.insert(45);

b.insert(70);
b.insert(60);
b.insert(80);
b.insert(55);
b.insert(85);""
""b.insert(20);
b.insert(40);
b.insert(10);
b.insert(5);
b.insert(45);

b.insert(70);
b.insert(60);
b.insert(80);
b.insert(55);
b.insert(85);""

4 Fare un attraversamento preordine attraversando il nodo radice prima, poi la struttura a sinistra e, infine, l'albero giusto. E 'facile fare questo in modo ricorsivo con un piccolo albero binario, in quanto non trabocchi lo stack. Se l'albero binario è molto grande, la funzione attraversamento dovrebbe essere implementato iterativamente.

5 Aggiungere un nuovo metodo, preordine, alla classe BinaryTree. Qui il metodo di stampa solo il valore di ogni nodo si visita. ""public void preorder() {
System.out.println(value);
if(left != null) left.preorder();
if(right != null) right.preorder();
}""
""public void preorder() {
System.out.println(value);
if(left != null) left.preorder();
if(right != null) right.preorder();
}""

6 Chiamare il nuovo metodo dopo i vostri inserti per stampare i nodi in preordine. ""b.preorder();"

Consigli e avvertenze

  • Nelle sue librerie predefinite, Java non fornisce una classe albero binario, ma, come mostrato, è abbastanza semplice per creare una classe base albero binario.