You are on page 1of 6

Profesorado de Informtica Ciencias de la Computacin INET- DFPD Matemtica I - Matemtica Discreta usando el computador

Ing. Prof. Paula Echenique

rboles Una de las estructuras de datos ms importantes en programacin es el rbol. Pueden usarse los rboles para representar la informacin en una estructura jerrquica. Los rboles pueden procesarse en forma recursiva y son muy adaptables a pruebas matemticas. El estudio de rboles ilustra las conexiones entre varios temas de la matemtica discreta y ofrece oportunidades para aprovechar la matemtica formal en la programacin prctica. La idea de estructura jerrquica es muy usada en la prctica. Por ejemplo, los libros son a menudo organizados como una sucesin de captulos cada uno de los cuales son una sucesin de secciones que puede tener subdivisiones, y as sucesivamente. Una empresa puede organizarse como las colecciones de unidades comerciales cada uno de las cuales pueden tener varias secciones. Las secciones, a su vez, pueden tener secciones mltiples, y as sucesivamente. El software es organizado como una coleccin de mdulos cualquiera que pueden constituirse de varios su modulos, con el nivel de refinamiento que los diseadores encuentren apropiado. En cierto nivel, los mdulos se expresan en unidades bsicas como los objetos, los mtodos, o procedimientos. En otros trminos, las estructuras jerarquas proporcionan una eficaz la manera de organizar la informacin. Los rboles proporcionan una capacidad enorme para expresar la idea de jerarqua. Ellos son objetos formales, matemticos. Definicin 1 Un rbol o bien es un rbol vaco o es un nodo junto con una sucesin de rboles. Sea A un conjunto cualquiera: 1. nil Arbol(A) 2. (cons a a1 a2 an) Arbol(A) si (a A) (a1, a2, ,an Arbol(A)) La definicin es inductiva. El punto de arranque para la definicin inductiva es el rbol vaco. La definicin no dice lo que un rbol vaco es; esto queda como un trmino indefinido, y la existencia del rbol vaco se acepta como un axioma. El trmino nodo no se define, y la existencia de nodos para construir rboles tambin se toma como un axioma. Ms adelante cuando se usen rboles para representar entidades matemticas especficas diremos exactamente qu entidades comprenden el la informacin que contiene cada nodo que compone el rbol que se est construyendo. Definicin 2 El primer nodo que se agrega a un rbol no vaco es la raz del rbol. Cada miembro individual de la sucesin de rboles en la que se divide un rbol no vaco se denomina hijo. Definicin 3. Un rbol no vaco cuya la sucesin asociada de rboles est vaca se llama hoja. Una hoja sola es el tipo ms simple de rbol no vaco. En este rbol la raz es una hoja. En un rbol ms complejo, es decir, uno que consiste en un nodo con hijos, la raz no es una hoja. Definicin 4. Se dice que s es un subrbol de t, si s es el propio t o si t es no vaco y s es un subrbol de uno de los hijos de t. La definicin del trmino subrbol tambin es inductiva. Definicin 5. Un rbol s es una hoja de un rbol t si s es un subrbol de t y s es una hoja.

Pgina 1 de 6

Diagrama de un rbol, representacin grfica

raz ramas

nodos

hojas

Definicin 6. Se dice que un nodo n ocurre en un rbol t (o pertenece a t) y se denota nt, si t es un rbol que consiste en un cierto nodo m con una sucesin de hijos (a1, a2, ..,an) y n o bien es m, o bien n pertenece a uno de los hijos de m. Ningn nodo pertenece al rbol vaco, por definicin. Definicin 7. Se dice que un nodo n es un nodo interior al rbol t si n pertenece a t y existe una sucesin de rboles (a1, a2, ..,an) tal que n junto con esa sucesin es un subrbol de t. Los rboles normalmente contienen datos adicionales en sus nodos y hojas. La estructura del rbol (comprendiendo los nodos y hojas) proporciona un organizacin para los valores de los datos, haciendo que la informacin sea ms fcil de usar que si simplemente estuviera contenida en una lista. Se considera el rbol que representa la expresin aritmtica (3. 4) + ((5. 6)/8). la raz del rbol es el + el funcionamiento, y cada subrbol representa expresiones que describen los argumentos a ser agregados. Las hojas del rbol representan los nmeros que aparecen en la expresin. El valor de la expresin puede calcularse trabajando desde las hojas a la raz, mientras se van calculando los valores intermedios que corresponden a cada operador.

Pgina 2 de 6

Muchos intrpretes de lenguajes de programacin y compiladores se acostumbran a representar con rboles la estructura del programa entero.

rboles binarios
El caso particular de rboles dnde cada nodo debe tener exactamente dos hijos se llama rbol binario. Como se dijo antes un nodo de un rbol puede tener cualquier cantidad de hijos. Los rboles binarios normalmente se usan en las aplicaciones prcticas de computacin. El ejemplo anterior de las EA se representa utilizando un rbol binario Definicin inductiva de rboles binarios 1. 2. nil AB(A) (cons a izq der) AB(A) si a A izq AB(A) der AB(A)

Representacin de rboles binarios en Haskell rbol binario de enteros. data BinTreeInt = Leaf | Node Integer BinTreeInt BinTreeInt Dar los diagramas de los siguientes rboles: tree1 :: BinTreeInt tree1 = Leaf tree2 :: BinTreeInt tree2 = Node 23 Leaf Leaf tree3 :: BinTreeInt tree3 = Node 4 (Node 2 (Node 1 Leaf Leaf) (Node 3 Leaf Leaf)) (Node 7 (Node 5 Leaf (Node 6 Leaf Leaf)) (Node 8 Leaf Leaf)) Haskell tambin permite definir rboles polimrficos, dnde los datos de los nodos son de algn tipo a. El rbol resultado tiene tipo BinTree a, que significa "rbol binario con valores de tipo a".

Pgina 3 de 6

rbol binario de un tipo a: data BinTree a = BinLeaf | BinNode a (BinTree a) (BinTree a) deriving Show tree4 :: BinTree String tree4 = BinNode "cat" BinLeaf (BinNode "dog" BinLeaf BinLeaf) tree5 :: BinTree (Integer,Bool) tree5 = BinNode (23,False) BinLeaf (BinNode (49,True) BinLeaf BinLeaf) tree6 :: BinTree Int tree6 = BinNode 4 (BinNode 2 (BinNode 1 BinLeaf BinLeaf) (BinNode 3 BinLeaf BinLeaf)) (BinNode 6 (BinNode 5 BinLeaf BinLeaf) (BinNode 7 BinLeaf BinLeaf))

Recorrida de rboles Una tarea comn es recorrer uno a uno los nodos de un rbol con el fin de procesar los datos en de cada nodo, creando una lista como resultado. Un algoritmo que realiza esta funcin se denomina recorrida de un rbol. Para rboles binarios se utilizan comnmente tres algoritmos para recorridas: Preorden: se visita primero la raz y a continuacin, se recorre en preorden el subrbol izquierdo y luego en preorden el subrbol derecho. Enorden: se visita el subarbol izquierdo en enorden, a continuacin la raz y por ltimo el subrbol derecho en enorden. Postorden se visita el subrbol izquierdo en postorden, luego en postorden el subrbol derecho y por ltimo la raz.

Recorrida en preorden del rbol de la figura: [4, 2, 1, 3, 7, 5, 6, 8]. Recorrida en enorden del rbol de la figura: [1, 2, 3, 4, 5, 6, 7, 8]. Recorrida en postorden del rbol de la figura: [1, 3, 2, 6, 5, 8, 7, 4]

Pgina 4 de 6

Ejercicios:

1.

Listar los nodos del rbol anterior en: a. Preorden b. Enorden c. Postorden Definir funciones que recorran un rbol binario en: a. Preorden b. Enorden c. Postorden

2.

Ejercicios: 1. Definir un tipo de datos rbol que contiene un carcter y un entero en cada nodo, y exactamente tres subrboles. 2. Definir un tipo de datos rbol que contiene un entero en cada nodo, y que permite a cada nodo tener cualquier nmero de subrboles. 3. Defina el tipo de datos Tree que representa rboles binarios de elementos de un tipo

genrico que slo guarda informacin en los nodos hojas (nodos externos). Los nodos internos no guardan informacin. El rbol ms pequeo es una hoja. a. Defina una funcin mapTree que dado un rbol de tipo (Tree A), para un tipo
genrico A, y una funcin f:A->B, con B un conjunto dado, retorne un rbol de tipo (Tree B) obtenido por la aplicacin de la funcin f a cada uno de los nodos hojas del rbol parmetro. b. Defina una funcin que cuente la cantidad de nodos hojas que posee un rbol de tipo (Tree A), para un tipo genrico A.

Pgina 5 de 6

4.

Pruebe que la funcin MapTree preserva la cantidad de nodos hojas del rbol parmetro. d. Defina una funcin hojas que retorne una lista con las hojas de un rbol de tipo (Tree A), para un tipo genrico A. Pruebe luego que la cantidad de nodos hojas que posee un rbol de tipo (Tree A), para un tipo genrico A, es igual a la longitud de la lista resultante de aplicarle la funcin hojas al rbol. Defina el tipo de datos (BinTree A) de rboles binarios con nodos internos de un tipo genrico A y nodos externos (hojas) de un tipo genrico B. El rbol ms pequeo es una hoja. a. Defina una funcin que cuente la cantidad de nodos externos de un rbol binario de tipo (BinTree A).

c.

b. Defina una funcin que cuente la cantidad de nodos internos de un rbol binario de tipo BinTree. c. Pruebe que la cantidad de nodos externos en un rbol rbol binario de tipo BinTree es igual a la cantidad de nodos internos del rbol ms 1.

Pgina 6 de 6

You might also like