Está en la página 1de 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

2.

Definir funciones que recorran un rbol binario en:


a. Preorden
b. Enorden
c. Postorden

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

c.

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).

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

También podría gustarte