La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Definición Estructura de datos jerárquica (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí por medio de ramas. Formalmente,

Presentaciones similares


Presentación del tema: "Definición Estructura de datos jerárquica (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí por medio de ramas. Formalmente,"— Transcripción de la presentación:

1

2 Definición Estructura de datos jerárquica (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí por medio de ramas. Formalmente, un árbol es una estructura da datos que cumple una de las siguientes condiciones: Estructura vacía Nodo de tipo base que tiene de 0 a N subárboles disjuntos entre sí. 1 3 4 57 9 2944 17 69 Nodo base: raíz del árbol

3

4 Definición. Árbol de grado 2 Implementación física: Estructura estática (matrices) Estructura dinámica Los nodos de un árbol tienen (al menos) tres componentes: Clave (de tipo simple o estructurada) Puntero que indique la ubicación del árbol derecho Puntero que indique la ubicación del árbol izquierdo Además: convención para indicar que no tiene hijos (valor null)

5 012345 clave1734917 Ar.Iz135*** Ar.De24**** 1 37 4917 arbol Memoria estática Memoria dinámica 1 7 3* 4**9** 17** nombre raiz Arbol NodoArbol

6 Definición de las clases Clase Arbol public class Arbol { String nombre; NodoArbol raiz; public Arbol () { nombre = null; raiz = null; } Clase NodoArbol public class NodoArbol { int clave; NodoArbol iz; NodoArbol de; public NodoArbol () { clave = 0; iz = null; de = null; }

7 Aplicado a objetos de la clase Arbol: // Escribe las claves del árbol binario en preorden. static void preOrden (NodoArbol arbol) { if (arbol != null) { System.out.print (arbol.clave+" ") ; preOrden (arbol.iz); preOrden (arbol.de); } public void preorden () { preorden (raiz); } Orden de visita de nodos: 1, 2, 4, 9, 15, 5, 3, 8 y 7. Preferido para: Búsquedas. Recorrido en Preorden. 1 3 4 2 5 87 915 arbol nombre raiz

8 Aplicado a objetos de la clase Arbol: // Escribe las claves del árbol binario en orden central. static void ordenCentral (NodoArbol arbol) { if (arbol != null) { ordenCentral (arbol.iz); System.out.print (arbol.clave+" "); ordenCentral (arbol.de); } public void ordenCentral () { ordenCentral (raiz); } Orden de visita de nodos: 9, 4, 15, 2, 5, 1, 8, 3 y 7. Preferido para: Recorrido de acuerdo al orden físico de los nodos. En árboles binarios de búsqueda recupera la secuencia. arbol nombre raiz Recorrido en Orden Central 1 3 4 2 5 87 915

9 Aplicado a objetos de la clase Arbol: // Escribe las claves del árbol binario en postorden. static void postOrden (NodoArbol arbol) { if (arbol != null) { postOrden (arbol.iz); postOrden (arbol.de); System.out.print (arbol.clave + " ") ; } public void postOrden () { postOrden (raiz); } Orden de visita de nodos: 9, 15, 4, 5, 2, 8, 7, 3 y 1. Preferido para: Liberar memoria. Nodos buscados en los niveles más bajos del árbol. Recorrido en Postorden 1 3 4 2 5 87 915 arbol nombre raiz

10 Árbol sobre Matriz: clases. Clase NodoArbol Clase Arbol class NodoArbol { int clave, izq, der; NodoArbol () { clave = 0; izq = -1; der = -1; } public class ArbolMatriz { final int NULL = -1, N = 10; NodoArbol [ ] matriz; int numNodos; ArbolMatriz () { matriz = new NodoArbol [N]; for (int i = 0; i < N; i++) matriz [i] = new NodoArbol (); numNodos = 0; }

11 Árbol sobre Matriz: representación. 0 1 2 3 4 5 6 7 8 9 Clave102051545250000 Hijo izquierdo23 5 Hijo derecho14

12 Árbol sobre Matriz: recorridos en profundidad. Preorden Orden central private void preOrden (int i) { if (i != NULL) { System.out.print (matriz [i].clave+", "); preOrden (matriz [i].izq); preOrden (matriz [i].0der); } public void preOrden () { preOrdenAux (0); } private void ordenCentralAux (int i) { if (i != NULL) { ordenCentralAux (matriz [i].izq); System.out.print (matriz [i].clave+", "); ordenCentralAux (matriz [i].der); } public void ordenCentral () { ordenCentralAux (0); } Postorden private void postOrdenAux (int i) { if (i != NULL) { postOrdenAux (matriz [i].izq); postOrdenAux (matriz [i].der); System.out.print (matriz [i].clave+", "); } public void postOrden () { postOrdenAux (0); }


Descargar ppt "Definición Estructura de datos jerárquica (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí por medio de ramas. Formalmente,"

Presentaciones similares


Anuncios Google