Sunteți pe pagina 1din 19

Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.

Arboles
En esta seccin se presentan los rboles que son un tipo de dato abstracto ms adecuado
para el tratamiento de grandes cantidades de informacin, las aplicaciones de los
mismos son muy diversas, as por ejemplo, se usan para el almacenamiento y bsqueda
de informacin ya que pueden establecerse diversas estructuras en las que el tiempo
medio de las operaciones de bsqueda es del orden de log(n), lo que es bastante bueno
comparado por ejemplo, con las listas enlazadas en la bsqueda de alguna informacin,
otros mbitos de aplicacin son en la implementacin del sistema de arcivos en los
sistemas operativos, manejo de arcivos en la realizacin de bases de datos, as como
diversos rboles que poseen sus propias estructuras y propiedades, tales como los
rboles !!, "play, #ed$%lac&, !'(, etc))))
(os rboles se basan en el concepto de nodo, que corresponde a cualquier tipo cuyos
elementos son registros formados por un campo datos y un nmero dado de punteros, tal
como se vieron en las listas enlazadas , por ejemplo, lista enlazada, lista doblemente
enlazada, rbol binario y un rbol ternario)
*n rbol es una estructura no lineal formada por un conjunto de nodos y un conjunto de
ramas o arcos, tal como se aprecia en la siguiente figura)
!ora, si los nodos estn rotulados con el fin de almacenar un tipo de informacin,
tenemos una gran variedad de rboles) En general, digamos que en un rbol e+iste un
nodo especial denominado raz. !s mismo, un nodo del que sale alguna rama, recibe el
nombre de nodo de bifurcacin o nodo rama y un nodo que no tiene ramas recibe el
nombre de nodo terminal o nodo hoja tal como lo muestra la siguiente figura)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
raz -ivel .
nodo de bifurcacin
-ivel ,
ojas -ivel /
0e un modo ms formal, diremos que un rbol es un conjunto finito de uno o ms nodos
tales que1
a) E+iste un nodo especial llamado raz del rbol, y
b) los nodos restantes estn agrupados en n 2 . conjuntos disjuntos !
,
, )), !
n
donde cada
uno de los cuales es a su vez un rbol que recibe el nombre de subrbol.
Evidentemente, la definicin dada es recursiva3 es decir, emos definido un rbol como
un conjunto de rboles) 0e la definicin se desprende, que cada nodo de un rbol es la
raz de algn subrbol contenido en la totalidad del mismo) El nmero de ramas de un
nodo recibe el nombre de grado del nodo) El nivel de un nodo respecto al nodo raz se
define diciendo que la raz tiene nivel . y cualquier otro nodo tiene un nivel igual a la
distancia de ese nodo al nodo raz) El m+imo de los niveles se denomina $rofundidad o
altura del rbol) Es til limitar los rboles en el sentido de que cada nodo sea a lo sumo
de grado /) 0e esta forma cabe distinguir entre subrbol izquierdo y subrbol dereco
de un nodo) (os rboles as formados, se denominan rboles binarios. *n rbol binario
es un conjunto finito de nodos que consta de un nodo raz que tiene dos subrboles
binarios denominados subrbol iz)uierdo y subrbol derecho. (as e+presiones
algebraicas, debido a que los operadores que intervienen son operadores binarios, nos
dan un ejemplo de estructura en rbol binario) (a figura siguiente nos muestra un rbol
que corresponde a la e+presin aritm4tica1 (a5b6c)7(d$e7f)
El rbol binario es una estructura de datos muy til cuando el tama8o de la estructura no
se conoce, y se necesita acceder a sus elementos ordenadamente, la velocidad de
bsqueda es importante o el orden en el que se insertan los elementos es casi aleatorio)
En definitiva, un rbol binario es una coleccin de objetos (nodos del rbol) cada uno de
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
/
!
% 9
E : 0
7
5
a 6
b c
$
d 7
e f
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
los cuales contiene datos o una referencia a los datos, una referencia a su subrbol
izquierdo y una referencia a su subrbol dereco) "egn lo e+puesto, la estructura de
datos representativa de un nodo puede ser de la forma siguiente1
"i el nmero de nodos en un rbol de orden t es n, entonces un rbol completo de altura
contiene1
(,) - t
t
t
i

= =

,
,
,
,
En particular, un rbol binario (t;/) contiene
-

= / ,
nodos) Esto nos dice que para
un rbol binario de altura ; < , se tienen = nodos) >al como se v4 en la siguiente figura,
Clasificacin de los rboles
! causa del gran significado que poseen los rboles es que se ace necesaria una
clasificacin, tanto en la forma, como los datos que son almacenados en los rboles, as
como en la forma de buscar un tipo de informacin, y de recorrer los nodos) En general,
los datos o informacin se encuentra en los nodos, de aqu que consideremos en forma
particular los rboles binarios y la forma de cmo disponer su informacin, generando
un tipo de rbol llamado arbol de bsqueda binaria)
!%%(rboles de bsqueda binaria)
(as claves o datos son dispuestas de la siguiente manera1 los datos menores a la
izquierda y los mayores a la dereca) En la siguiente figura se puede constatar
fcilmente la posicin en la cual se encuentra algn dato en particular)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
<
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
?.
<. @.
?? <A B. /.
B/ ,, /? <= ?.
?,
?@ B@
!rboles de 0ecisin(o rbol de bsqueda o de comparaciones)
Este tipo de rboles es aplicado a los algoritmos el cual se obtiene al trazar de principio
a fin la accin del algoritmo, representando cada comparacin como un v4rtice del
rbol) En los rboles binarios se da la situacin de dos comparaciones, las que se pueden
codificar por1
$ . 1 0ecisin para el ijo izquierdo
$ , 1 0ecisin para el ijo dereco
En el ejemplo, se muestra el rbol de comparaciones para la bsqueda secuencial, en
donde debemos resaltar los CcajonesC como nodos e+ternos o especiales y los nodos en
donde se encuentra la informacin, generndose as un nuevo tipo de rbol, llamado
rbol e+tendido)
=
=
=
=

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
?
,
<
n
/
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
En este sentido, el rbol de comparaciones cambia radicalmente su rotulacin si
incorporamos la comparacin D, 2, o ;, tal como se v4 en la siguiente figura,
cuando n;,., en la cual se combinan dos comparaciones a fin de obtener una
comparacin de tres vas para cada paso, as el rbol se v4 ms compacto, en
comparacin con el rbol que considera las comparaciones a la izquierda y 2
a la dereca)
< = >
< = > < = >
< = > < = > < = > < = >
< = > < = > < = >
%asado en esta nueva forma de rotular los nodos, digamos que podramos clasificar los
rboles en rboles orientados a los nodos y rboles orientados a las ojas, para
distinguirlos digamos que los primeros son rboles en donde los datos se encuentran en
los nodos del rbol, mientras que los otros son rboles en donde los datos se encuentran
solamente en las ojas) 9onvengamos que, tal como la figura anterior si el rbol es
ampliado con nodos especiales, de manera que todos los subrboles estn completos, es
decir todos los apuntadores sin nodos descendientes apuntan a un nodo especial, se
abla de un rbol e+tendido
En este conte+to definamos la longitud de trayectoria interna de un nodo, como el
nmero de aristas o ramas que se recorren desde la raz al nodo) Eor otra parte, la
longitud de trayectoria interna de un rbol, es la suma de todas las longitudes de
trayectoria de sus nodos) En principio, un nodo de nivel i tiene una longitud de
trayectoria i) "in embargo, es posible definir rboles en los que esto no sucede, tal como
ocurre en los rboles %)
Ftra forma de clasificacin es considerar rboles optimal estticos u optimal dinmicos,
los primeros significa que el rbol debe ser construido nuevamente, mientras que el otro
se construye durante el ingreso o al agregar los datos) El objetivo final en ambos casos
es lograr una razonable estructura de almacenamiento, aunque esta situacin en general
globalmente no se pueda lograr, pero s localmente) En ambos casos, se evitan rboles
degenerados, que son los rboles que degeneran en listas lineales o ramas)
(os rboles sirven tambi4n para representar una jerarqua, tal como lo muestra el
siguiente ejemplo, respecto de la representacin de e+presiones aritm4ticas) Eor
ejemplo, para la e+presin
( 7 ( ) ! % 9) 0 E : +
se puede representar por el
siguiente rbol1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
@
@
/
, <
?
G
B A
,
.
=
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
6
5 $
0 7 6
!
E % 9 :
Relacin de Orden y Representacin
En cada nodo, se da una situacin de orientacin y jerarquerizacin en los rboles
binarios1 >oda clave al lado dereco(izq) de los subarboles son mayores(menores) a la
clave del nodo) 9on ayuda de esta relacin de orden se generan arboles que sirven para
buscar, borrar o allar algn elemento en particular)
Hnformacin
Eunteros
Euntero al ijo izquierdo Euntero al ijo dereco
(a bsqueda de un elemento se realiza desde la raz asta el nodo en donde se encuentra
la clave, en caso de e+istir, en caso contrario no e+iste el dato)
,) (as dos claves son iguales, la que se busca y la que tiene el nodo1 el elemento es
encontrado
/) (a clave buscada es peque8a1 el elemento buscado se encuentra solamente en los
subarboles izquierdo
<) (a clave buscada es mayor1 el elemento buscado se encuentra solamente en los
subarboles dereco)
Este proceso se realiza asta que la clave es encontrada) -otar que la estructura y
crecimiento de los rboles binarios son a trav4s de una relacin de orden, por tal motivo
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
B
0!>F"
Hzquierda(Hzq)
dereca(0er)
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
se generan varios rboles con rotulaciones distintas) Eor ejemplo, se dan las < claves ,,
/ y <, tan solo con estas podemos generar distintos rboles binarios respetuosos del
orden antes descrito, por ejemplo
,, /, <
/, ,, <
,, <, /
/, <, ,
<, ,, /
<, /, ,
,
/
<
,
<
/
/
,
<
< /
< ,
,
,
/
e+istiendo B distintas formas de rotularlos y por ende B rboles binarios distintos) En
general, se demuestra que n$elementos generan nI formas)
!qu e+isten (&$,)I "ubarboles !qu e+isten (- J&)I subarboles
con claves ,))- con claves &5,, )))) -
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
=
&
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
Operaciones
'eamos como generar un rbol de bsqueda binaria a partir del rbol vaco, al cual se le
agregan los datos (,/, =, ,@, @, ,<))
Insercin en un ABB
,) comparar la clave a insertar con la raz del rbol) "i es mayor, debe avanzar acia el
subarbol dereco) "i es menor, debe avanzar acia el subarbol izquierdo)
#epetir sucesivamente ,), asta que se cumpla alguna de las siguientes condiciones1
a) el subarbol dereco es vaco, o el subarbol izquierdo es vaco3 en cuyo caso se
procede a insertar el elemento en el lugar que le corresponda)
b) (a clave que se quiere insertar es igual a la raz del rbol3 en cuyo caso no se realiza
la insercin)
Eor ejemplo, insertar ,/., G= y ,<., en ese orden a partir del rbol vaco)
Borrar o eliminar un nodo
"e refiere a eliminar un -odo con una determinada clave, suponiendo que el elemento
a sido encontrado) E+isten varias situaciones, entre ellas estn1
a) "i el elemento a borrar es terminal u oja, simplemente se elimina)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
G
,/
= ,@
@ ,<
,/
.
,/
.
,/
.
G= G= ,<
.
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
b) "i el elemento a borrar tiene un solo descendiente, entonces tiene que sustituirse por
ese descendiente)
c) "i el elemento a borrar tiene los / descendientes, entonces se tiene que sustituir por
el nodo que se encuentra ms a la izquierda en el subrbol dereco o por el nodo que
se encuentra ms a la dereca en el subrbol izquierdo)
Eor ejemplo
a) El nodo que se eliminar es una hoja
!ntes despues
b) El nodo que se elimina tiene e+actamente un ijo)
!ntes despues
c) El nodo que se elimina tiene / ijos
!ntes despues
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
A
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
Ftro ejemplo, es el rbol siguiente,
,/
= ,@
@ ,<
/ B ,?
y se desea saber, que forma tendr cuando se eliminen los valores / y B)(caso a)
,/
= ,@
@ ,<
,?
c) ,<(caso b)
,/
= ,@
@ ,?
d) ,@ (caso b)
,/
= ,?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,.
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
@
e) @ (caso a)
,/
= ,?
f) ,/ (caso c)
=
,?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,,
G
G @
=
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
0ado el rbol bsqueda binaria) "e desea eliminar el ,/, como queda el !%%)
,/
=
@
/) Hmplementacin del borrado segn la transferencia de claves en un rbol de bsqueda
binaria en Kava
a) "i el elemento a borrar es terminal u oja, simplemente se elimina)
b) "i el elementoa borrar tiene un solo descendiente, entonces tiene que sustituirse por
ese descendiente)
c) "i el elemento a borrar tiene los / descendientes, entonces se tiene que sustituir por el
nodo que se encuentra ms a la izquierda en el subrbol dereco o por el nodo que se
encuentra ms a la dereca en el subrbol izquierdo)
Recorrido y orden en Arboles
El principio de recorrer un rbol binario, determina un orden sobre el conjunto de
nodos) E+isten < posibilidades o principios de como recorrer un rbol binario, ellos son
la lectura en Hnorden, Ereorden y Eosorden)
Hnorden
Frden H#0
(,) #ecorrer el subrbol izquierdo en H-F#0E-
(/) 'isitar la raz
(<) #ecorrer el subrbol dereco en H-F#0E-
Frden 0#H
(,) #ecorrer el subrbol dereco en H-F#0E-
(/) 'isitar la raz
(<) #ecorrer los subrbol dereco en H-F#0E-
(os orden H#0 y 0#H son uno inverso del otro) El orden H#0, se llama orden sim4trico
Ereorden
Frden #H0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,/
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
(,) 'isitar la raz
(/) #ecorrer el subrbol izquierdo en E#EF#0E-
(<) #ecorrer el subrbol dereco en E#EF#0E-
Frden #0H
(,) 'isitar la raz
(/) #ecorrer el subrbol dereco en E#EF#0E-
(<) #ecorrer el subrbol izquierdo en E#EF#0E-
En general se visita la raz antes de los dos subrboles)
Eosorden
Frden H0#
(,) #ecorrer el subrbol izquierdo en EF">F#0E-
(/) #ecorrer el subrbol dereco en EF">F#0E-
(<) 'isitar la raz
Erimero se visitan los subrboles y luego la raz)

Frden 0H#
(,) #ecorrer el subrbol dereco en EF">F#0E-
(/) #ecorrer el subrbol izquierdo en EF">F#0E-
(<) 'isitar la raz
Erimero se visitan los subrboles y luego la raz)
Eor ejemplo, se dan una serie de rboles binarios, y la idea es describir su recorrido en
las formas antes definidas)
,)$
A
%
9 0
E : L M
H K N (
OEreordenO1 ! % 9 E H : K 0 L M N (
OHnordenO1 E H 9 : K % L 0 N M ( !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,<
5
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
OEosordenO1 H E K : 9 L N ( M 0 % !
/)

6 5
! % 6 E
9 0
OEreordenO1 5 6 ! % 5 6 9 0 E
OHnordenO1 ! 6 % 5 9 6 0 5 E
OEosordenO1 ! % 6 9 0 6 E 5 5
Este ejemplo nos muestra una estructura de rbol (representacin de una estructura
jerarquica de una e+presin aritmetica)) Esta representacin CarbreaP es en particular
muy til para la traduccin de una e+presin en lenguaje de mquina) 0esde la
estructura anterios se pueden representar fcilmente las distintas formas de una
e+presin aritm4tica) Entregando de esta manera el recorrido en OEosordenO como la
notacin Eostfija, y en OEreordenO la notacin ErefijaO)
<)
5
! 6
% 9
!"reorden!# $ A % B C
OHnordenO1 ! 5 % 6 9
OEosordenO1 ! % 9 6 5
?)
6
5 9
! %
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,?
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
OEreordenO1 6 5 ! % 9
OHnordenO1 ! 5 % 6 9
OEosordenO1 ! % 5 9 6
Aplicaciones de los recorridos
9on ayuda de los recorridos antes descritos se pueden determinar algunas otras
operaciones sobre los rboles) Eor ejemplo, determinar el nmero de ojas en el rbol,
entregar la altura del rbol, copiar el rbol, borrar el rbol, descripcin grfica de un
rbol de bsqueda binaria) En un rbol de bsqueda binario se puede dar la siguiente
situacin, la que se interpreta como un rbol de bsqueda binario que degenero en una
lista lineal, derivando en que la bsqueda de algn elemento en particular resulta tan
costoso como buscarlo en forma e+austiva, de aqu que es importante evitar que se
genere una situacin de este tipo)
,
/
<
?
@
Eara ello, estn los Crboles perfectamente balanceadosP que evitan que se de una
situacin como la descrita a continuacin, de manera de obtener una forma de balanceo
que en definitiva facilita la bsqueda de algn elemento, pues no se encuentra a una
profundidad tan alejado de la raz) "e verifica que el rbol de la dereca es rbol !'(,
que luego lo veremos en detalle)
! continuacin se muestra un simple algoritmo que genera un rbol con las condiciones
de balanceo)
(,) ordenar las claves en una sucesin ordenada en forma creciente
(/) es conocido el nmero de Fbjetos (claves) que se deben tener)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,@
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
"e consideran dos tipos de recorrido1 recorrido en profundidad y recorrido en ancura o
a nivel) Euesto que los rboles no son secuenciales como las listas, ay que buscar
estrategias alternativas para visitar todos los nodos) 0ada la siguiente figura1
&i'ura (
$ Recorridos en profundidad1
6 #ecorrido en preorden1 consiste en visitar el nodo actual (visitar puede ser
simplemente mostrar la clave del nodo por pantalla), y despu4s visitar el subrbol
izquierdo y una vez visitado, visitar el subrbol dereco) Es un proceso recursivo por
naturaleza) "i se ace el recorrido en preorden del rbol de la figura , las visitas seran
en el orden siguiente1 a,b,d,c,e,f)
void preorden(tarbol 6a)
Q
if (a I; -*(() Q
visitar(a)3
preorden(a$2izq)3
preorden(a$2der)3
R
R
6 #ecorrido en inorden u orden central1 se visita el subrbol izquierdo, el nodo actual, y
despu4s se visita el subrbol dereco) En el ejemplo de la figura , las visitas seran en
este orden1 b,d,a,e,c,f)
void inorden(tarbol 6a)
Q
if (a I; -*(() Q
inorden(a$2izq)3
visitar(a)3
inorden(a$2der)3
R
R
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,B
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
6 #ecorrido en postorden1 se visitan primero el subrbol izquierdo, despu4s el subrbol
dereco, y por ltimo el nodo actual) En el ejemplo de la figura , el recorrido quedara
as1 d,b,e,f,c,a)
void postorden(arbol 6a)
Q
if (a I; -*(() Q
postorden(a$2izq)3
postorden(a$2der)3
visitar(a)3
R
R
(a ventaja del recorrido en postorden es que permite borrar el rbol de forma
consistente) Es decir, si visitar se traduce por borrar el nodo actual, al ejecutar este
recorrido se borrar el rbol o subrbol que se pasa como parmetro) (a razn para
acer esto es que no se debe borrar un nodo y despu4s sus subrboles, porque al borrarlo
se pueden perder los enlaces, y aunque no se perdieran se rompe con la regla de
manipular una estructura de datos ine+istente) *na alternativa es utilizar una variable
au+iliar, pero es innecesario aplicando este recorrido)
$ Recorrido en amplitud1
9onsiste en ir visitando el rbol por niveles) Erimero se visitan los nodos de nivel ,
(como muco ay uno, la raz), despu4s los nodos de nivel /, as asta que ya no queden
ms) "i se ace el recorrido en amplitud del rbol de la figura una visitara los nodos en
este orden1 a,b,c,d,e,f)
Construccin de un rbol binario
Masta el momento se a visto la declaracin y recorrido de un rbol binario) "in
embargo no se a estudiado ningn m4todo para crearlos) ! continuacin se estudia un
m4todo para crear un rbol binario que no tenga claves repetidas partiendo de su
recorrido en preorden e inorden, almacenados en sendos arrays)
!ntes de e+plicarlo se recomienda al lector que lo intente acer por su cuenta, es
sencillo cuando uno es capaz de construir el rbol viendo sus recorridos pero sin aber
visto el rbol terminado)
Eartiendo de los recorridos preorden e inorden del rbol de la figura , puede
determinarse que la raz es el primer elemento del recorrido en preorden) Ese elemento
se busca en el array inorden) (os elementos en el array inorden entre i)q y la raz
forman el subrbol izquierdo) !simismo los elementos entre der y la raz forman el
subrbol dereco) Eor tanto se tiene este rbol1

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,=
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.

! continuacin comienza un proceso recursivo) "e procede a crear el subrbol
izquierdo, cuyo tama8o est limitado por los ndices i)q y der) (a siguiente posicin en
el recorrido en preorden es la raz de este subrbol) Sueda esto1


El subrbol b tiene un subrbol dereco, que no tiene ningn descendiente, tal y como
indican los ndices i)q y der) "e a obtenido el subrbol izquierdo completo de la raz
a, puesto que b no tiene subrbol izquierdo1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,G
Diseo y Anlisis de Algoritmos Dr. Eric Jeltsch F.
0espu4s seguir construy4ndose el subrbol dereco a partir de la raz a)
Aplicacin#
"e tiene un ficero de te+to !"9HH) Eara este propsito puede servir cualquier libro
electrnico de la librera Lutenberg o 9ervantes, que suelen tener varios cientos de
miles de palabras) El objetivo es clasificar todas las palabras, es decir, determinar que
palabras aparecen, y cuantas veces aparece cada una) Ealabras como Tni8oT$Tni8aT,
TvengoT$TvienesT etc, se consideran diferentes por simplificar el problema)
Escribir un programa, que recibiendo como entrada un te+to, realice la clasificacin
descrita anteriormente) Ejemplo1 >e+to1 Oabac, ola, adios, olaO
(a salida que produce es la siguiente1
a /
adios ,
b ,
c ,
ola /
-tese que el empleo de una lista enlazada ordenada no es una buena solucin) "i se
obtienen asta /.)... palabras diferentes, por decir un nmero, localizar una palabra
cualquiera puede ser, y en general lo ser, muy costoso en tiempo) "e puede acer una
implementacin por pura curiosidad para evaluar el tiempo de ejecucin, pero no
merece la pena)
(a solucin pasa por emplear un rbol binario de bsqueda para insertar las claves) El
valor de log(/.)...) es apro+imadamente de ,?) Eso quiere decir que localizar una
palabra entre /.)... llevara en el peor caso unos ,? accesos) El contraste con el
empleo de una lista es simplemente abismal) Eor supuesto, como se a comentado
anteriormente el rbol no va a estar perfectamente equilibrado, pero nadie escribe
novelas manteniendo el orden le+icogrfico (como un diccionario) entre las palabras, asi
que no se obtendr nunca un rbol muy degenerado) (o que est claro es que cualquier
evolucin del rbol siempre ser mejor que el empleo de una lista)
Eor ltimo, una vez realizada la lectura de los datos, slo queda acer un recorrido en
orden central del rbol y se obtendr la solucin pedida en cuestin de segundos)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Escuela "ngeniera en #om$utacin %ni&ersidad de 'a (erena
,A

S-ar putea să vă placă și