Este artículo describe las operaciones comunes de árboles binarios implementados por Java. Compártelo para su referencia, como sigue:
import java.util.arraydeque; import java.util.queue; import java.util.stack; // La creación de árboles binarios, secuencia jerárquica de transferencia recursiva no recursiva transversal delantero, medio y trasero // nodo de nodo Nodo {intement; Nodo izquierdo; Nodo derecho; public nodo () {} public nodo (int elemento) {this.element = element; }} // binaryTreePublic Class Tree {// Creat Tree desde Array public static nodo create (int [] data, int i) {if (i> = data.length || data [i] == -1) return null; Nodo temp = nuevo nodo (datos [i]); temp.left = createTree (datos, i * 2 + 1); temp.right = createTree (datos, i * 2 + 2); regresar temp; } // pre-pedido anticuado público recursivo estático void pre (tempe de nodo) {if (temp == null) return; System.out.print (temp.element + ""); pre (temp.left); pre (temp.right); } // Mid-Order Recursivo Recursivo Public estático void medio (temperatura de nodo) {if (temp == null) return; Mid (temp.left); System.out.print (temp.element + ""); Mid (temp.right); } // Último pedido post-orden recursivo público estático void estático último (temperatura de nodo) {if (temp == null) return; Último (temp.left); Último (temp.right); System.out.print (temp.element + ""); } // pre1 pre-pedido Traversal no recursiva pública estática void pre1 (tempe de nodo) {pila <node> stack = new Stack <> (); while (temp! = null ||! stack.isempty ()) {while (temp! = null) {stack.push (temp); System.out.print (temp.element + ""); temp = temp.left; } if (! stack.isEmpty ()) {temp = stack.pop (). Right; }}} // transversal en orden de Mid1 no recursivo público no recursivo void mid1 (tempe de nodo) {pila <node> stack = new stack <> (); while (temp! = null ||! stack.isempty ()) {while (temp! = null) {stack.push (temp); temp = temp.left; } if (! stack.isEmpty ()) {temp = stack.pop (); System.out.print (temp.element + ""); temp.nerk; }}} // Last1 Post-Order Traversal no recursivo Public static void Last1 (Node Temp) {Stack <Node> Stack = New Stack <> (); Pila <node> stack2 = new Stack <> (); while (temp! = null ||! stack.isempty ()) {while (temp! = null) {stack.push (temp); stack2.push (temp); temp = temp.right; } if (! stack.isEmpty ()) {temp = stack.pop (). izquierda; }} while (! stack2.isempty ()) system.out.print (stack2.pop (). elemento + ""); } // secuencia de capa ceng transversal public static void ceng (nodo temp) {if (temp == null) return; Queue <Node> queue = new ArrayDeque <> (); cola.offer (temp); while (! queue.isEmpty ()) {temp = queue.poll (); System.out.print (temp.element + ""); if (temp.left! = null) queue.offer (temp.left); if (temp.right! = null) queue.offer (temp.right); }} // demostración public static void main (string [] args) {int [] array = {1, 2, 3, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13}; Árbol de nodo = creattree (array, 0); System.out.println ("Wulin.com Resultados de la prueba:"); pre (árbol); System.out.println (); pre1 (árbol); System.out.println (); medio (árbol); System.out.println (); Mid1 (árbol); System.out.println (); Mid1 (árbol); System.out.println (); Último (árbol); System.out.println (); Last1 (árbol); System.out.println (); Ceng (árbol); }}Resultados de ejecución:
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.