Académique Documents
Professionnel Documents
Culture Documents
Unidad 3. Almacenamiento
Programa de la asignatura:
Estructura de datos
Unidad 3
Almacenamiento
Clave:
Ingeniera
15142419
TSU
16142419
Estructuras de datos
Unidad 3. Almacenamiento
ndice
Presentacin de la Unidad ................................................................................................... 3
Propsitos de la Unidad ....................................................................................................... 3
Competencia especfica ....................................................................................................... 3
3. Almacenamiento .............................................................................................................. 3
3.1. rboles .......................................................................................................................... 4
3.2. rboles binarios ............................................................................................................ 9
Cierre de la unidad ............................................................................................................. 15
Para saber ms .............................................................................................................. 16
Fuentes de consulta ........................................................................................................... 16
Estructuras de datos
Unidad 3. Almacenamiento
Presentacin de la Unidad
En la unidad 3 se abordarn dos temas sumamente importantes para las estructuras de
datos: rboles y rboles binarios. stos son temas de estudio elementales en cuanto al
almacenamiento de datos se refiere; tienen que ver con la forma de almacenar datos de
forma jerrquica.
Los rboles sirven para realizar bases de datos donde la bsqueda y almacenamiento sean
ptimos, ya que en un rbol los datos se almacenan no de forma lineal, como en una pila o
en una cola, donde los datos que entran slo se pueden leer en el respectivo orden de
entrada. Tambin sirven para encriptar archivos, o para crear compiladores.
En las dos unidades anteriores se estudiaron primero las diferentes estructuras de datos
como son pilas, listas y colas, sus algoritmos, ejemplos, etc. En la unidad 2 se abordaron
los temas de bsqueda y ordenacin de datos y, finalmente, en esta unidad conoceremos y
aprenderemos a utilizar los rboles.
Propsitos de la Unidad
Al trmino de esta unidad logrars:
Emplear los conceptos de rboles y rboles binarios que te permitan dar soluciones
a problemticas de almacenamiento de datos.
Competencia especfica
Almacenar archivos con un orden jerrquico para permitir bsquedas, recorridos seguros y
eficientes mediante el uso de rboles y rboles binarios.
3. Almacenamiento
Esta unidad con la que se cierra el estudio de la asignatura Estructuras de datos es de vital
importancia en tu carrera, ya que aprenderemos formas jerrquicas de almacenamiento de
datos. Desde hace mucho tiempo en el mundo han existido y siguen existiendo las
jerarquas: en los gobiernos, la milicia, las iglesias, las familias, etc. Asimismo, en trminos
informticos, en lo que se refiere al almacenamiento de datos, existen las jerarquas. Los
rboles son formas no lineales de almacenamiento de datos. En la siguiente figura
podemos ver la imagen de un rbol de genealoga, dicho rbol pertenece a un programa de
genealoga de descarga gratuita en internet. La siguiente figura muestra un ejemplo de un
Estructuras de datos
Unidad 3. Almacenamiento
rbol genealgico generado por un software que puedes descargar de forma gratuita en la
direccin que aparece debajo de la figura; un rbol genealgico es un claro ejemplo del uso
prctico que podemos darle al tema de rboles y rboles binarios.
rbol de genealoga
Tomada de Red.ahorro.net.
3.1. rboles
Un rbol es un objeto que comienza con una raz (root) y se extiende en varias
ramificaciones o lneas (edges), cada una de las cuales puede extenderse en
ramificaciones, hasta terminar finalmente en una para que puedas conocer de una forma
genrica acerca del tema de los rboles hoja (Goodrich y Tamassia, 2010, pp. 229-232).
Esta referencia te proporcionar un panorama ms amplio del tema de los rboles y su
aplicacin prctica en actividades del da a da. Los autores de la bibliografa mencionada
describen los rboles, su algoritmo, aplicaciones y los complementan con ejemplos;
primeramente desarrollan la definicin del concepto de rboles, enseguida plantean
situaciones de nuestra vida cotidiana donde empleamos las estructuras de rboles; un claro
ejemplo lo vemos en la imagen anterior, donde en un rbol genealgico se representan las
diferentes ramificaciones de los antepasados de una persona o familia en particular.
Los rboles representan las estructuras no lineales y dinmicas de datos ms importantes
en computacin:
Dinmicas, puesto que la estructura rbol puede cambiar durante la ejecucin de
un programa.
No lineales, puesto que a cada elemento del rbol pueden seguirle varios
elementos. La siguiente figura es un ejemplo de la representacin grfica de un
rbol donde podemos ver claramente que a cada nodo del rbol le puede seguir otro
Estructuras de datos
Unidad 3. Almacenamiento
nodo, esto nos permite conocer que un rbol es no lineal. Un rbol es dinmico ya
que puede cambiar su estructura una vez que se est ejecutando el programa.
Representacin de un rbol
Tomada de computacion.cs.cinvestav.mx
Generalidades
En la ciencia de la computacin definimos un rbol como un conjunto de nodos y lneas. Un
nodo es un elemento de informacin que reside en el rbol. Una lnea es un par de nodos
ordenados <u,v>, y a la secuencia de lneas se le denomina ruta (path).
Adems, los rboles tienen las siguientes propiedades:
Tienen un nodo al que se le llama raz del rbol.
Todos los nodos, excepto la raz, tienen una sola lnea de entrada (el nodo raz no
tiene ninguna).
Existe una ruta nica del nodo raz, a todos los dems nodos del rbol.
Si hay una ruta <a,b>, entonces a b se le denomina hijo de a y es el nodo raz
de un subrbol.
Ahora, consulta a Joyanes (2010, pp. 495-505) para que revises la explicacin que ofrece
el autor acerca de la representacin de los rboles. Podrs encontrar definiciones,
imgenes, etc. La bibliografa te servir para complementar la informacin proporcionada
en el texto de Goodrich y Tamassia (2010), ya que el autor da su propia definicin del
concepto de rbol, sus propios casos y ejemplos de aplicaciones en el mundo real. Es
importante que consultes la diferente bibliografa sugerida y que puedas formar tu propio
concepto, ejemplos, casos e incluso aplicaciones propias, seguramente influenciado por tu
entorno. Asimismo, Joyanes (2010) muestra cmo se forman grficamente los rboles, qu
son los nodos, cmo se representan, cmo se acomodan, etc.
La siguiente ilustracin muestra cmo se representan grficamente los nodos en un rbol.
Estructuras de datos
Unidad 3. Almacenamiento
La figura anterior fue recuperada del siguiente URL: www.javaya.com.ar. Este sitio muestra
de forma grfica y, a travs de ejemplos, el tema de los rboles mismo que el autor
Joyanes (2010) tambin explica en el libro ya citado. Tanto en el sitio web mencionado
como en dicho libro encontrars de forma didctica la explicacin para crear rboles a
travs de los nodos, cmo acomodar dichos nodos y cmo representarlos en una grfica.
Es menester que consultes ambas fuentes, tanto la del sitio web como la bibliogrfica, ya
que, a travs de la lectura que t mismo realices, formars tus propios conceptos y tu
visualizacin de forma grfica de un rbol a travs de nodos. Aprenders con diferentes
ejemplos a crear y utilizar los rboles.
Creacin de un rbol
Enseguida tienes una lista de 10 puntos necesarios para la creacin de un rbol, stas son
consideraciones para crear paso a paso el rbol y codificarlo.
1. Nodo indica un elemento, o tem, de informacin.
2. Todo rbol que no es vaco, tiene un nico nodo raz.
3. Un nodo X es descendiente directo de un nodo Y, si el nodo X es apuntado por el
nodo Y. X es hijo de Y.
4. Un nodo X es antecesor directo de un nodo Y, si el nodo X apunta al nodo Y. X es
padre de Y.
5. Se dice que todos los nodos que son descendientes directos (hijos) de un mismo
nodo (padre) son hermanos.
Estructuras de datos
Unidad 3. Almacenamiento
6. Todo nodo que no tiene ramificaciones (hijos), se conoce con el nombre de terminal u
hoja.
7. Todo nodo que no es raz, ni terminal u hoja se conoce con el nombre de interior.
8. Grado es el nmero de descendientes directos de un determinado nodo. Grado del
rbol es el mximo grado de todos los nodos del rbol.
9. Nivel es el nmero de arcos que deben ser recorridos para llegar a un determinado
nodo. Por definicin, la raz tiene nivel 1.
10. Altura del rbol es el mximo nmero de niveles de todos los nodos del rbol.
Ahora, consulta Goodrich y Tamassia (2010, pp. 233-250) para que profundices en los
algoritmos de creacin de un rbol. As podrs ampliar tu visin de cmo emplear los
puntos anteriores, incluso podrs consultar ejemplos. Los 10 puntos para la creacin de un
rbol puedes encontrarlos tambin en la bibliografa de Goodrich y Tamassia (2010);
adems encontrars ejemplos, imgenes y casos que te permitirn profundizar en el
empleo de dichos pasos.
La siguiente imagen nos ilustra la forma como se van insertando nodos en el rbol.
Estructuras de datos
Unidad 3. Almacenamiento
Aplicaciones
El concepto de rboles en programacin tiene aplicaciones muy especficas en el mundo
real. Si bien son cosas muy especficas de ciertas ciencias; por ejemplo, la genealoga
pudiera servir para conocer a los antepasados de una persona; pero tambin se puede
aplicar en otros escenarios, como en la cra de animales: con los perros con pedigr o con
los caballos de carrera, tambin sera aplicable a la propagacin de enfermedades. En
matemticas, por ejemplo, podra aplicarse en la teora de probabilidad al analizar
diferentes rutas de un suceso.
En el mbito del desarrollo de software, puede aplicarse en el anlisis de una interfaz
usuario, al analizar cmo navega el usuario en un ambiente que le proporciona diferentes
opciones de desplazamiento (por ejemplo, en una interfaz en un cajero automtico).
Puedes consultar bibliografa que te permita conocer otras aplicaciones de los rboles; para
ello, revisa Joyanes y Zahonero (2012, pp. 517-530) donde encontrars ms aplicaciones
de los rboles. En este texto puedes encontrar aplicaciones de los rboles, como lo son los
empleados en el campo de la medicina para estudiar el comportamiento de una
enfermedad en determinada poblacin o sector de sta, as como la erradicacin de la
enfermedad por medio de ciertos medicamentos. Se analizan las ramificaciones que se
generan, la cantidad de nodos y los recorridos a dichos nodos.
La imagen anterior muestra una plantilla para crear rboles genealgicos, que como ya se
explic en puntos anteriores, es una de las aplicaciones ms prcticas del tema de los
rboles en nuestra vida cotidiana.
Estructuras de datos
Unidad 3. Almacenamiento
Estructuras de datos
Unidad 3. Almacenamiento
IZQ
INFO
DER
IZQ: campo donde se almacena la direccin del subrbol izquierdo del nodo T.
INFO: campo donde se almacena la informacin de inters del nodo.
DER: campo donde se almacena la direccin del subrbol derecho del nodo T.
La definicin de un rbol binario en lenguaje algortmico queda de la siguiente forma:
ENLACE= ^NODO
NODO= REGISTRO
IZQ: tipo ENLACE
INFO: tipo de dato
DER: tipo ENLACE
Fin
10
Estructuras de datos
Unidad 3. Almacenamiento
Consulta Goodrich y Tamassia (2010, pp. 251-260) para que analices el algoritmo de
creacin de rboles binarios, lo pongas en prctica y adems puedas establecer las
diferencias entre la creacin de rboles y la creacin de rboles binarios. En el libro
encontrars el mismo algoritmo para la creacin de un rbol binario y tambin ejemplos que
te permitirn poner en prctica este algoritmo.
Recorrido de un rbol binario
Una de las operaciones ms importantes a realizar en un rbol binario es el recorrido de los
mismos. Recorrer significa visitar los nodos del rbol en forma sistemtica, de tal manera
que todos los nodos del mismo sean visitados una sola vez. Existen tres formas diferentes
de efectuar el recorrido y todas ellas de naturaleza recursiva, stas son:
1.
a)
b)
c)
Recorrido en preorden:
Visitar la raz
Recorrer el subrbol izquierdo
Recorrer el subrbol derecho
Recorrido pre-orden
Tomada de sites.google.com
2.
a)
b)
c)
Recorrido en inorden:
Recorrer el subrbol izquierdo
Visitar la raz
Recorrer el subrbol derecho
11
Estructuras de datos
Unidad 3. Almacenamiento
3.
a)
b)
c)
Recorrido en posorden:
Recorrer el subrbol izquierdo
Recorrer el subrbol derecho
Visitar la raz
Recorrido post-orden
Tomada de sites.google.com
12
Estructuras de datos
Unidad 3. Almacenamiento
13
Estructuras de datos
Unidad 3. Almacenamiento
Por lo tanto, consulta Joyanes y Zahonero (2012, pp. 551-559) para que profundices en
torno a las bsquedas en un rbol binario. Es importante que conozcas de forma clara de
un rbol binario y cul es la diferencia contra un rbol convencional. Una vez que
identifiques cada tipo de rbol, podrs emplearlos de forma adecuada.
La bibliografa te ofrece diferentes ejemplos que puedes consultar para que practiques y
apliques la bsqueda en un rbol binario.
Algoritmo de Bsqueda
BSQUEDA (NODO, INFOR)
{El algoritmo localiza un nodo en un rbol binario de bsqueda. NODO es una variable de
tipo puntero que apunta a la raz del rbol. INFOR es una variable que contiene la
informacin que se desea localizar en el rbol. Cabe aclarar que la primera vez la variable
NODO no puede ser vaca.}
Si INFOR < NODO^.INFO entonces
Si NODO^.IZQ = NULL entonces
Escribir El nodo no se encuentra en el rbol
Sino
BSQUEDA (NODO^.IZQ, INFOR) {Llamada recursiva}
Fin Si
Sino
Si INFOR > NODO^.INFO entonces
Si NODO^.DER = NULL entonces
Escribir El nodo no se encuentra en el rbol
Sino
BSQUEDA (NODO^.DER, INFOR) {Llamada recursiva}
Fin Si
Sino
Escribir El nodo se encuentra en el rbol
Fin Si
Fin Si
Fin del algoritmo
Insercin de un rbol binario de bsqueda
Los pasos que deben realizarse para insertar un elemento a un rbol binario de bsqueda
son los siguientes:
1. Debe compararse la clave a insertar con la raz del rbol. Si es mayor, debe
avanzarse hacia el subrbol derecho. Si es menor, debe avanzarse hacia el
subrbol izquierdo.
2. Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes
condiciones:
14
Estructuras de datos
Unidad 3. Almacenamiento
Cierre de la Unidad
En esta unidad se abordaron diferentes temas de gran inters en la programacin, estos
temas son los rboles y los rboles binarios. Con ayuda del material bibliogrfico de apoyo
pudiste conocer lo que es un rbol, su algoritmo, as como implementaciones reales.
Tambin revisaste los rboles binarios, cmo se usan, la forma de representarse, sus
algoritmos y sus variantes: algoritmo preorden, inorden y posorden. Tambin conociste los
rboles binarios de bsqueda, su algoritmo, forma de insertarles datos, as como la forma
de borrar de un rbol binario. Con estos temas y con esta unidad concluimos la asignatura
de Estructuras de datos.
15
Estructuras de datos
Unidad 3. Almacenamiento
Para saber ms
Existen diversas fuentes que puedes consultar para ampliar tus conocimientos. Entre otras
fuentes, puedes consultar la siguiente liga:
http://delta.cs.cinvestav.mx/~adiaz/anadis/BinTree.pdf
En la siguiente fuente encontrars un documento de extensin .pdf, en donde podrs
revisar de una forma muy prctica definiciones, recorridos y algoritmos de rboles.
http://www.lcc.uma.es/~galvez/ftp/tad/tadtema4.pdf
Esta otra fuente detalla ms a profundidad los diferentes conceptos relacionados con los
rboles, asimismo explica de forma algebraica el algoritmo base para programar rboles.
Fuentes de consulta
16