Está en la página 1de 7

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 submdulos, 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 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) sii
(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.

Pgina 1 de 7

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.
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 n t, 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.

Pgina 2 de 7

Se considera el rbol que representa la expresin aritmtica (3 x 4) + ((5 x 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.

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. nil (AB A)
2. (cons a izq der) (AB A)
der (AB A)

sii a A izq (AB A))

Representacin de rboles binarios en Haskell


rbol binario de enteros.
data BinTreeInt = Leaf
| Node Integer BinTreeInt BinTreeInt

Pgina 3 de 7

Dar los diagramas de los siguientes rboles implementados en Haskell:

tree1
tree1
tree2
tree2
tree3
tree3

:: BinTreeInt
= Leaf
:: BinTreeInt
= Node 23 Leaf Leaf
:: BinTreeInt
=
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".
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))

Pgina 4 de 7

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.

Ejemplo:

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 5 de 7

Ejercicios:
Para el rbol binario representado por el siguiente diagrama:

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

Pgina 6 de 7

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.
c. 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.
4. 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 7 de 7

También podría gustarte