Está en la página 1de 32

Arboles

Profesora: Marisol Gmez Institucin Universitaria Antonio Jos Camacho Curso: Estructuras de datos

Definicin
Un rbol es una estructura de datos dinmica no lineal, jerrquica, aplicada sobre una coleccin de elementos u objetos llamados nodos. Un nodo de ellos es conocido como raz y de l se genera una relacin o parentesco entre los nodos dando lugar a trminos como padre, hijo hermano, antecesor, sucesor, ancestro, entre otros. Para definir un rbol se necesita recursin.

Aplicacin
Se utilizan para representar frmulas matemticas, organizar informacin, rboles genealgicos.

Representacin de los arboles


Raiz

Arboles N -arios

En la siguiente grafica, de la cual puede inferirse que Carlos es el padre de Bertha, Pedro y Oscar, y a su vez Bertha es la madre de Flor y Luis y Flor es la madre de Jefferson, Julieth y Oscar (rbol genealgico)

Conceptos
Raz: nico nodo que no tiene antecesor, es decir, sin padre. Rama: arista formada entre dos nodos. Antecesor: un nodo A es el antecesor de un nodo B si por alguna de las ramas se llega Sucesor: un nodo X es sucesor de un nodo Y si por alguna de las ramas de Y se puede llegar a B desde A. Grado de un nodo: nmero de descendientes directos que tiene un nodo.

Conceptos
Grado del rbol: es el mayor grado entre sus nodos. Nodo interno: es aquel que tiene al menos un descendiente o nodo hijo. Nodo hoja (externo): nodo que no tiene descendientes o no tiene nodos Descendiente directo: hijo, nieto

Conceptos
Subrbol: rbol formado por un nodo y sus descendientes Padre: es el antecesor inmediato de un nodo Hijo: cualquiera de sus descendientes inmediatos. Descendiente de un nodo: es cualquier sucesor de un nodo. Hermano de un nodo: es otro nodo con el mismo padre. Generacin: es un conjunto de nodos con la misma profundidad. Hoja: es el nodo que no tiene sucesores (sin hijos, nodo terminal). Rama: es cualquier camino del rbol

Arboles Binarios
Un rbol Binario es un conjunto finito de elementos que bien puede estar vaco o est formado por una raz con dos rboles binarios llamados subrbol izquierdo y subrbol derecho.

Representacin de un rbol binario

Operaciones de arboles
Recorrer rbol Preorden Inorden Postorden Insercin nodo Entre otras

Recorrer un rbol
Recorrer un rbol consiste en acceder una sola vez a todos sus nodos. Esta operacin es bsica en el tratamiento de arboles y nos permite, por ejemplo, imprimir toda la informacin almacenada en el rbol, o bien eliminar toda esta informacin o, si tenemos un rbol de nmeros, sumar todos los valores, etc.

Tipos de Recorridos
Recorrido preorden Visitar la raz Recorrer el subrbol izquierdo en preorden Recorrer el subrbol derecho en preorden

Recorrido enorden Recorrer el subrbol izquierdo en inorden Visitar la raz Recorrer el subrbol derecho en inorden Recorrido postorden Recorrer el subrbol izquierdo en postorden Recorrer el subrbol derecho en postorden Visitar la raz

Recorrer un rbol

Los recorridos son :

Inorden: D C E B F A T S U H G K J L
Postorden : D E C F B T U S H K L J G A Preorden: A B C D E F G H S T U J K L

Ejercicio en clase

Escriba cada uno de los recorridos, para loas anteriores arboles.

rbol binario de bsqueda


Son arboles binarios que tienen los datos ordenados de tal manera que todos los datos que estn en el subrbol izquierdo son menores que la raz y todos los datos que estn en el subrbol derecho son mayores o iguales que la raz

Ejemplos de rbol binario de bsqueda

Implementacin de un rbol binario


Para implementar un rbol binario primero se define la estructura de los nodos, donde cada nodo del rbol estar formado por tres partes as: La informacin contenida en el nodo, la cual puede ser un tipo primitivo (int, char, double) o puede ser cualquier tipo de objeto. Un enlace al hijo derecho (raz del subrbol derecho). Un enlace al hijo izquierdo (raz del subrbol izquierdo

Implementacin de arboles binarios en Java

La clase nodo y constructor

Otros mtodos del nodo

La clase rbol y el constructor

Crear un rbol binario

Recorrido en Inorden

Recorrido en Preorden

Recorrido en Postorden

Crear rbol binario de bsqueda

Buscar elemento

Anexar un nodo

Insertar nodo por la izquierda y por la derecha

Mtodo main()

Metodo main()