Red de conocimiento informático - Material del sitio web - ¿Cómo implementar una estructura de árbol en Java?

¿Cómo implementar una estructura de árbol en Java?

árbol de paquetes

importar java.util.LinkedList

importar java.util.List

/**

* Función : Almacene los valores de la matriz en un árbol binario y luego recorralo de 3 maneras

*

* Referencia 0: Estructuras de datos (C) por Weimin Yan

*

* Referencia 1: /question/81938912.html

*

* Referencia 2: @date: 2011-5-17

*

*/

*/

clase pública BinTreeTraverse2 {

matriz int[] privada = { 1, 2, 3, 4, 5, 6, 7, 8, 9};

Lista de nodos estática privada = null

/**

* Clase interna: nodo

*

* @author ocaicai@yeah.net @date: 2011-5-17

*

*/

clase estática privada Nodo {

Nodo hijo izquierdo

Nodo hijo derecho

int datos; /p>

p>

Nodo(int newData) {

leftChild = null

rightChild = null

datos = newData;

}

}

}

public void createBinTree() {

nodeList = new LinkedListlt;Nodegt ;();

p>

//Convierte el valor de la matriz al valor del nodo Nodo en secuencia

for (int nodeIndex = 0; nodeIndex lt; array.length; nodeIndex) {

nodeList .add(new Node(array[nodeIndex])); }

// Según la relación numérica entre el nodo padre y el nodo hijo, construya un árbol binario para el primer nodo padre lastParentIndex-1

for (int parentIndex = 0; parentIndex lt; array.

// Nodo secundario izquierdo

p>

nodeList.get(parentIndex).leftChild = nodeList

.get(parentIndex * 2 1 );

// Nodo secundario derecho

nodeList.get(parentIndex).rightChild =

nodeList

.get(parentIndex * 2 2);

}

// Nodo secundario izquierdo

nodeList.get(parentIndex) .leftChild = nodeList

.get(parentIndex * 2 1

// Nodo secundario derecho

nodeList.get(parentIndex).rightChild = nodeList

.

}

// Último nodo principal: debido a que es posible que el último nodo principal no tenga un nodo secundario adecuado, debe procesarse por separado

int lastParentIndex = array .length / 2 - 1;

// Nodo secundario izquierdo

nodeList.get(lastParentIndex).leftChild = nodeList

.if array.length 2 == 1) {

nodeList.get(lastParentIndex).rightChild = nodeList

.

}

/ **

* Recorrido prioritario

*

* Tres estructuras transversales diferentes son iguales, solo que en diferentes órdenes

*

* @param node

* El nodo a atravesar

*/

public static void preOrderTraverse(Nodo nodo) {

p>

if (nodo == null)

return

System.out.print(node.data " "); /p>

preOrderTraverse( nodo.leftChild);

preOrderTraverse(nodo.rightChild

}

/****.

/**

* Recorrido intermedio

*

* Estas tres estructuras transversales diferentes son iguales, pero en diferentes órdenes

*

*

p>

* @param nodo

* El nodo a atravesar

* /

public static void inOrderTraverse(Nodo nodo) {

if (nodo == null)

return; (Nodo.leftChild);

System.out.print(nodo.data " "

inOrderTraverse(nodo. rightChild

}

/**

* Recorrido posterior al pedido

*

*

* Estas tres estructuras transversales diferentes son iguales, pero tienen diferentes prioridades

*

* @param node

* El nodo a atravesar

* nodo.

public static void postOrderTraverse(Nodo nodo) {

if (nodo == null)

return

postOrderTraverse( nodo. leftChild).

postOrderTraverse(node.rightChild);

System.out.print(node.data " "); >

public static void main(String[] args) {

BinTreeTraverse2 binTree = new BinTreeTraverse2()

binTree.createBinTree(); // El valor en el índice 0 en nodeList es el nodo raíz

Node root = nodeList.get(0);

System.out.println("Pre-OrderTraverse()"); );

Raíz del nodo = nodeList.get(0);

System.out.println("Pre-OrderTraverse()")println("Pre-Order Traverse:")

p>

preOrderTraverse(root);

System.out.println();

System.out.println("Orden medio recorrido:");

inOrderTraverse(root);

System.out.println();

System.out.println("Recorrido posterior al pedido :");

postOrderTraverse(raíz);

}

}

}