You are on page 1of 39

Estructura de Datos

Árboles

Algoritmo y Estructura de Datos Objetivos : • • • • • • Definición de Árboles Características de los árboles Árboles binarios Representación de arboles generales como binarios. Representación de un bosque como árbol binario. Arboles Balanceados.

ESTRUCTURA DE DATOS – Árboles

DEFINICION DE ARBOL Los árboles son estructuras de datos jerarquizadas, organizadas y dinámicas. Formada por un conjunto de nodos y un conjunto de punteros que conectan pares de nodos. • Jerárquica porque los componentes están a distinto nivel. • Organizada porque importa la forma en que este dispuesto el contenido. • Dinámica porque su forma, tamaño y contenido pueden variar durante la ejecución.

Al primer nodo se le conoce con el nombre de RAIZ

.ESTRUCTURA DE DATOS – Árboles DEFINICION DE ARBOL Los arboles balanceados o AVL son la estructura de datos mas eficientes para trabajar con la memoria principal interna del procesador. representan la estructura de datos mas eficiente para trabajar en memoria secundaria o externa. mientras que los arboles B y especialmente la versión B+.

ESTRUCTURA DE DATOS – Árboles REPRESENTACION DE UN ARBOL a b e f c d E A RAIZ B C D F Representación Textual Representación Nodal .

conocido como nodo padre. excepto la raíz esta conectado por medio de un puntero o arista a un único nodo. Todo nodo. El numero de nodos que atraviesa es la longitud del camino.ESTRUCTURA DE DATOS – Árboles CARACTERISTICAS • • • • Todo árbol tiene un único nodo raíz. . Todo nodo que no tiene mas ramificaciones se le conoce como nodo terminal u hoja. que le(s) antecede. Hay un único camino desde la raíz a cada nodo.

es el numero de descendientes directos que tenga. • Altura de un árbol. • Nivel.ESTRUCTURA DE DATOS – Árboles CARACTERISTICAS • Padre es el antecesor inmediato de un nodo • Hijo. • Hermano de un nodo. es el máximo número de niveles de todos los nodos del árbol. es el número de punteros o aristas o arcos que deben ser recorridos para llegar a un determinado nodo. es el máximo grado de todos los nodos. • Grado de un Árbol. . es cualquiera de sus descendientes inmediatos. • El grado de un nodo cualesquiera. es otro nodo con el mismo padre.

ESTRUCTURA DE DATOS – Árboles CARACTERISTICAS DE LOS ÁRBOLES A Grado 2 E H Grado del Arbol 3 hojas raiz B F I C D G hijos Nivel 3 .

Windows. Linux. • Crear directorio de archivos en programas. • Representación de operaciones algebraicas.ESTRUCTURA DE DATOS – Árboles APLICACIONES DE ÁRBOLES • Representación de un árbol genealógico. • Para realizar la administración de directorios como para UNIX. etc. .

ESTRUCTURA DE DATOS – Árboles ÁRBOLES BINARIOS Son los árboles cuyo grado es 2 como máximo. Es decir. 1 o 2 hijos . un árbol es binario si tiene 0.

(b) Árbol binario de 3 nodos. A es la raíz de grado 2 por tener 2 hijos.ESTRUCTURA DE DATOS – Árboles (a) es un nodo binario de un solo nodo. . A es la raíz de grado 1. El árbol solo tiene hijos derechos y ningún hijo izquierdo. por lo tanto A es la raíz en el nivel 0. (e) Árbol binario de 5 nodos. de longitud 3 con E y D como hojas. B es de grado 0 por no tener hijos. (c) Árbol binario de 3 nodos. B es de grado 1 por tener 1 hijo. El árbol solo tiene hijos izquierdos y ningún hijo derecho. (d) Árbol binario de 2 nodos. A es la raíz de grado 1.

ESTRUCTURA DE DATOS – Árboles Ejemplos : .

ESTRUCTURA DE DATOS – Árboles TIPO DE ÁRBOLES BINARIOS (1) Los árboles binarios distintos. (4) Los árboles binarios completos o llenos. (3) Los árboles binarios equivalentes. . (2) Los árboles binarios similares.

ESTRUCTURA DE DATOS – Árboles TIPO DE ÁRBOLES BINARIOS (1) Los árboles binarios distintos: Se dice que dos árboles binarios son distintos cuando sus estructuras son diferentes. Ejemplo: .

Ejemplo .ESTRUCTURA DE DATOS – Árboles TIPO DE ÁRBOLES BINARIOS (1) Los árboles binarios similares: Dos arboles binarios son similares cuando sus estructuras son idénticas. pero la información que contienen sus nodos es diferente.

Ejemplo: .ESTRUCTURA DE DATOS – Árboles TIPO DE ÁRBOLES BINARIOS (1) Los árboles binarios equivalentes: Son aquellos arboles que son similares y que además los nodos contienen la misma información.

ESTRUCTURA DE DATOS – Árboles TIPO DE ÁRBOLES BINARIOS (4) Los árboles binarios completos o llenos. etc. Así por inducción : En el nivel k hay 2^k nodos Solo para árboles binarios completos . de este modo se cumple : En el nivel cero (2^0) existe un nodo En el nivel uno (2^1) existen dos nodos En el nivel dos (2^2) existen cuatro nodos. donde : Cada nodo tiene 2 hijos.

Recorrer todo el sub-arbol izquierdo. .Recorrer todo el sub-arbol derecho.Recorrer todo el sub-arbol izquierdo. Post-Orden (Postfijo)  IDR . .Recorrer todo el sub-arbol izquierdo. . . En-Orden (Infijo)  IRD .Visitar la raiz .Recorrer todo el sub-arbol derecho.Visitar la raiz.Recorrer todo el sub-arbol derecho. .ESTRUCTURA DE DATOS – Árboles RECORRIDO DE UN ARBOL BINARIO • Los árboles binarios se pueden recorrer de la siguiente manera: Pre-Orden (Prefijo)  RID . .Visitar la raiz.

ESTRUCTURA DE DATOS – Árboles H D A M P R PreOrden (RID): _____________ InOrden (IRD): _____________ PostOrden (IDR): _____________ C J O PreOrden (RID): HDACPMJOR InOrden (IRD): ACDHJMOPR PostOrden (IDR): CADJOMRPH .

ESTRUCTURA DE DATOS – Árboles Ejercicio : L J F A H M PreOrden (RID): _____________ InOrden (IRD): _____________ R PostOrden (IDR): _____________ W C G I T Z .

Tipo de árboles binarios de búsqueda.Algoritmo y Estructura de Datos ÁRBOLES BINARIOS DE BÚSQUEDA Objetivos : • • • • Árboles binarios de búsqueda. Operaciones básicas. Implementación de un árbol binario ordenado. .

Los nodos insertados en árboles de búsqueda binarios se insertan como hojas. .ESTRUCTURA DE DATOS – Árboles ÁRBOLES BINARIOS DE BÚSQUEDA Definición: Un árbol binario de búsqueda también llamado árbol ordenado es aquel donde se cumple que nodos menores que la raíz van a la izquierda y los que son mayores que la raíz van a la derecha.

4. Búsqueda de un Nodo del árbol binario. Eliminar un Nodo del árbol binario. 3. 2. .ESTRUCTURA DE DATOS – Árboles OPERACIONES BASICAS Las operaciones básicas son: 1. Recorrer un árbol binario. Inserción de un nuevo nodo al árbol binario (agregar).

comparamos si es menor se va a la izquierda y si es mayor a la derecha siempre y cuando sea una hoja nuevo raiz (d) nuevo raiz (b) nuevo raiz 4 6 raiz 9 6 4 null (a) raiz 6 (c) 9 6 4 (e) .ESTRUCTURA DE DATOS – Árboles INSERCION DE UN NODO A UN ARBOL (AGREGAR) Se crea un nuevo Nodo Si la raíz esta vacía entonces raíz será el nuevo Nodo Si la raíz tiene datos.

En el "recorrido en anchura". En el "recorrido en profundidad”. .ESTRUCTURA DE DATOS – Árboles RECORRIDO DE UN ARBOL BINARIO Para visualizar o consultar los datos almacenados en un árbol se necesita "recorrer" el árbol o "visitar" los nodos del mismo 1. el proceso se realiza horizontalmente desde la raíz a todos sus hijos. a continuación a los hijos de sus hijos y así sucesivamente hasta que todos los nodos han sido procesados. tenemos los siguientes métodos: Pre-Orden (Prefijo)  RID In-Orden (Infijo)  IRD Post-Orden (Postfijo)  IDR 1.

1.ESTRUCTURA DE DATOS – Árboles BUSQUEDA DE UN ARBOL BINARIO El proceso de búsqueda se hace recorriendo el árbol. Primero ver si el dato esta en la raíz Si el dato no esta en la raíz. comparar si es menor que la raíz y buscar en la izquierda. … raiz p p MAYOR dato= 5 6 4 p MENOR 9 1 3 5 . 2. sino buscar en la derecha.

Cabe destacar que antes de eliminar un nodo. ... 3. simplemente se suprime redefiniendo el puntero de su predecesor.Si el elemento a eliminar es terminal u hoja. Para esto se utiliza el algoritmo de búsqueda.-Si el elemento a eliminar tiene un solo descendiente. Se deben distinguir los siguientes casos: 1. entonces se tiene que sustituir por el nodo que se encuentra mas a la izquierda en el subárbol derecho o por el nodo que se encuentra mas a la derecha en el subárbol izquierdo.ESTRUCTURA DE DATOS – Árboles ELIMINAR NODO EN UN ARBOL BINARIO DE BUSQUEDA La operación de eliminación en un árbol binario de búsqueda es un poco mas complicada que la inserción.Si el elemento a eliminar tiene los dos descendientes. Esta consiste en eliminar un nodo sin violar los principios que definen un árbol binario de búsqueda. se debe localizar este en el árbol. entonces tiene que sustituirse por ese descendiente. 2.

ESTRUCTURA DE DATOS – Árboles TIPOS DE ARBOLES BINARIO El proceso de búsqueda se hace recorriendo el árbol. .

ESTRUCTURA DE DATOS – Árboles IMPLEMENTACION DE UN ARBOL BINARIO 6 4 1 3 5 9 izq info der .

sueldo = suel. public Nodo der. String nom.ESTRUCTURA DE DATOS ARBOL – Arbol de objetos IMPLEMENTACION DE LA CLASE NODO public class Nodo { public String codigo. public String sueldo . String suel) { codigo = cod. public String nombre. public Nodo(String cod. public Nodo izq. nombre = nom. } } 0 null null .

} } raiz null .ESTRUCTURA DE DATOS ARBOL – Arbol de objetos IMPLEMENTACION DE LA CLASE PrgArbol public class PrgArbol { Nodo raiz . public PrgArbol() { raiz = null .

tamaño(p. else return 1+ Math.izq) + tamaño(p. else return 1+ tamaño(p.max( tamaño(p.izq).der). } } . } public int altura(Nodo p) { if(p==null) return -1.ESTRUCTURA DE DATOS ARBOL – Arbol de objetos IMPLEMENTACION DE LA CLASE PrgArbol ALGUNOS METODOS IMPORTANTES public class PrgArbol { Nodo raiz . public int tamaño(Nodo p) { if(p==null) return 0.der) ).

String nom.codigo)<0) q = p.izq =nuevo. else p. while(q != null) { p = q. if(raiz == null) raiz = nuevo. else { p = q = raiz. else q = p. q.izq. String suel) { Nodo nuevo. if(cod. p. – Arbol de objetos INSERTAR (AGREGAR) public void agregar(String cod. } if(cod.der= nuevo. suel). } } } Permite agregar un nuevo nodo al árbol Metodo agregar no recursivo .ESTRUCTURA DE DATOS ARBOL public class Arbol { Nodo raiz . nuevo = new Nodo(cod.compareTo(p.der.compareTo(p.codigo)<0) p. nom.

String nom.compareTo(p. String suel) { if(p == null) p = new Nodo(String cod. String cod.izq = agregar(p. } Permite agregar un nuevo nodo al árbol Metodo agregar recursivo . String nom. String nom.izq. else if(cod. String suel).ESTRUCTURA DE DATOS ARBOL – Arbol de objetos INSERTAR (AGREGAR) public Nodo agregar(Nodo p. String nom.codigo)>0) p.der = agregar(p. String cod. return p. String suel). else p.der. String cod. String suel).

} } . } public String preOrden( Nodo p) { if(p != null) return info + "\n" + preOrden(p. } public String postOrden( Nodo p) { if(p != null) return postOrden(p.izq) + info + "\n" + enOrden(p. return "".der).der)+ info + "\n".izq) + postOrden(p.izq) + preOrden(p. return "".ESTRUCTURA DE DATOS ARBOL – Arbol de objetos IMPLEMENTACION DE LA CLASE ARBOL : RECORRIDO DE UN ARBOL ( EN PROFUNDIDAD) public class Arbol { Nodo raiz .der). public String enOrden( Nodo p) { if(p != null) return enOrden(p. return "".

la no linealidad entre sus elementos y por su sencilla programación. Además su uso se ve favorecido por su dinamismo.ESTRUCTURA DE DATOS – Árboles REPRESENTACION DE ARBOLES GENERALES COMO BINARIOS. se aplican en la solución computacional de muchos problemas. . en arboles binarios. Por lo tanto resulta muy útil poder convertir arboles generales. Los arboles binarios. por las razones ya mencionadas. con 0 a n hijos.

-Relacionar en forma vertical el nodo padre con el hijo que se encuentra mas a la izquierda. 3. Además. .ESTRUCTURA DE DATOS – Árboles REPRESENTACION DE ARBOLES GENERALES COMO BINARIOS. 1. aproximadamente 45 grados hacia la izquierda. se debe eliminar el vinculo de ese padre con el resto de sus hijos.Enlazar los hijos de cada nodo en forma horizontal los hermanos.-Rotar el diagrama resultante.. 2. y así se obtendrá el árbol binario correspondiente.

Es posible utilizar el algoritmo de conversión analizado anteriormente. con algunas modificaciones. para generar un arbol binario a partir de un bosque. .ESTRUCTURA DE DATOS – Árboles REPRESENTACION DE UN BOSQUE COMO ARBOL BINARIO Un bosque representa un conjunto normalmente ordenado de uno o mas arboles generales.

ESTRUCTURA DE DATOS – Árboles REPRESENTACIN DE UN BOSQUE COMO ARBOL BINARIO 1. 3.Relacionar los hijos de cada nodo – los hermanos..en forma horizontal. Además se debe eliminar el vinculo del padre con el resto de sus hijos..Enlazar en forma vertical el nodo padre con el hijo que se encuentra mas a la izquierda.Enlazar en forma horizontal las raíces de los distintos arboles generales.. . 4. 2.-Rotar el diagrama resultante aproximadamente 45° hacia la izquierda y así se obtendrá el árbol binario.