Tecnología

Inicio

Cómo atravesar los árboles binarios en Java

árboles binarios son complejas estructuras de datos utilizadas en los programas de ordenador para almacenar datos en la memoria utilizando un algoritmo de almacenamiento común. Mediante el uso de este tipo de algoritmo, los datos se pueden almacenar en un patrón estable, haciendo recuperación y buscar a través de datos más fácil. Los programadores de Java que están diseñando los árboles binarios son más que probable que el diseño de algoritmos también para atravesar esas estructuras de datos. Hay tres maneras de atravesar árboles binarios: en orden, pre-orden, y después de la orden.

Instrucciones

1 Recorrer el árbol binario usando el recorrido en orden. Suponiendo que la clase "BT" representa un árbol binario, el código siguiente muestra cómo imprimir el árbol en orden. Cada nodo tiene un puntero izquierda y derecha que apunta a los nodos de izquierda y derecha del nodo actual, junto con un elemento de datos que representa su valor. El recorrido en orden atravesará el nodo izquierdo primero hasta que se golpee nula, y la impresión del nodo padre antes de atravesar la derecha y empezar de nuevo. Los medios que cualquier nodo sólo se imprimirá si todos sus nodos secundarios del lado izquierdo se han impreso por primera vez:

public class {BT

public void finde (Nodo x) {

si (x == null) {
regreso; // Detiene la recursión cuando no hay ningún nodo
}

finde (x.left); // Siempre traverse primera a la izquierda
x.data de impresión; // Imprimir los datos una vez que los rendimientos de izquierda nodo
finde (x.right); // Atravesar la derecha
}

2 Recorrer el árbol en pre-orden. Esta orden es similar en orden, a excepción de que la impresión del nodo viene antes de cualquier recorrido. Por lo tanto, el nodo imprimirá su valor y, a continuación, recorrer la izquierda. Entonces, cuando la recursión devuelve al nodo después de atravesar la izquierda, el nodo entonces atravesar derecha. Esto significa que el nodo siempre imprimirá en sí antes de cualquier nodos hijos de impresión:

pública preorden vacío (x nodo) {

si (x == null) {
regreso; // Detiene la recursión cuando no hay ningún nodo
}

x.data de impresión; //impresión
finde (x.left); // Transversal izquierda
finde (x.right); // Atravesar la derecha
}

3 Recorrer el árbol después de la orden. Esto es lo contrario del recorrido en preorden. Un nodo siempre se verá a sus nodos izquierda o derecha antes de la impresión en sí, lo que significa que todos los demás nodos secundarios por debajo de ella se imprimirán en primer lugar:

pública orden posterior void (x nodo) {

si (x == null) {
regreso; // Detiene la recursión cuando no hay ningún nodo
}

finde (x.left); // Transversal izquierda
finde (x.right); // Atravesar la derecha
x.data de impresión; //impresión
}