Está en la página 1de 18

ESTRUCTURAS DE DATOS JERÁQUICAS

Hermes Mosquera Angulo

Noviembre 10 de 2016
Licencia Creative Commons
Contenido
1. Teoría general de Árboles ....................................................................................................... 3
1.1 Definición de árboles............................................................................................................. 3
1.2 Otros conceptos de la teoría general de árboles .................................................................. 4
1.3 Árbol completo ...................................................................................................................... 5
1.4 Operaciones básicas con árboles .......................................................................................... 5
1.5 Árboles ordenados ................................................................................................................ 6
2. Árboles Binarios ...................................................................................................................... 7
2.1 Definición de árboles binarios ............................................................................................... 7
2.2 Clasificación de los árboles binarios ...................................................................................... 9
Árbol binario completo: .............................................................................................................. 9
Árbol Binario Semejante: .......................................................................................................... 10
Árbol Binario Isomorfo: ............................................................................................................. 11
2.2 Formas de Recorrer un árbol binario .................................................................................. 11
Recorrido en Preorden .............................................................................................................. 12
Recorrido en Inorden ................................................................................................................ 12
Recorrido en Postorden ............................................................................................................ 13
3. Árbol binario de búsqueda (ABB) .......................................................................................... 14
3.1 Más acerca de árboles binarios de búsqueda (ABB) ........................................................... 15
2.5.1 Ventajas de los árboles binarios de búsqueda ................................................................. 17
Fuentes bibliográficas ................................................................................................................... 18

2
ESTRUCTURAS DE DATOS JERÁQUICAS

1. Teoría general de Árboles

Los árboles son, sin duda, una de las estructuras de datos no lineales,
conocidas también como estructuras de datos jerárquicas, empleadas en
informática tanto para resolver problemas de hardware como de software.
Los árboles de directorios son organizaciones bastante empleadas por
cualquier usuario o programador de una computadora. De igual manera
cumplen un buen papel en la toma de decisiones, valido como árbol de
decisiones.

Los árboles genealógicos y los organigramas son ejemplos comunes.


Entre otras aplicaciones, los árboles se emplean para analizar circuitos
eléctricos y para representar la estructura de fórmulas matemáticas, así
como para organizar la información de bases de datos, para representar
la estructura sintáctica de un programa fuente en compiladores y para la
toma de decisiones.

1.1 Definición de árboles


Los árboles son estructuras de datos muy similares a las listas doblemente
enlazadas, en el sentido que tienen punteros que apuntan a otros
elementos, pero no tienen una estructura lógica de tipo lineal o secuencial
como aquellas, sino ramificada. Tienen aspecto de árbol, de ahí su
nombre.

Su estudio desde el punto de vista matemático pertenece a la teoría de


grafos; desde el punto de vista informático son estructuras de datos, lo
que significa que cada elemento, denominado nodo u hoja, contiene un
valor. Su estudio corresponde a la teoría de bases de datos, y en esta
terminología, los nodos que dependen de otros se denominan hijos. Cada
hoja puede tener un máximo de hijos, si no tiene ninguno se dice que es
un nodo terminal.

Un árbol es una estructura de datos no lineal en la que cada nodo puede


apuntar a uno o varios nodos. También se suele dar una definición
recursiva: un árbol es una estructura compuesta por un dato y varios
árboles. Esto son definiciones simples. Una representación gráfica de
los árboles se puede visualizar en la figura 50 presente a continuación.

3
Figura 1. Representación gráfica de árboles

1.2 Otros conceptos de la teoría general de árboles


“Con relación al tipo de nodos que hacen parte de los árboles, se
identifican algunos nodos:

Nodo: Un árbol binario es un conjunto de elementos cada uno de los


cuales se denomina nodo. Un árbol Binario puede tener cero nodos y este
caso se dice que está vacío. Puede tener un sólo nodo, y en este caso
solamente existe la raíz del árbol o puede tener un número finito de
nodos. Cada nodo puede estar ramificado por la izquierda o por la derecha
o puede no tener ninguna ramificación.

Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del
árbol. En el ejemplo, 'L' y 'M' son hijos de 'G'.

Nodo padre: nodo que contiene un puntero al nodo actual. En el ejemplo,


el nodo 'A' es padre de 'B', 'C' y 'D'.

Los árboles con los que trabajará tienen otra característica importante:
cada nodo sólo puede ser apuntado por otro nodo, es decir, cada nodo
sólo tendrá un padre. Esto hace que estos árboles estén fuertemente
jerarquizados, y es lo que en realidad les da la apariencia de árboles.

En cuanto a la posición dentro del árbol:

Nodo raíz: nodo que no tiene padre. Este es el nodo que usaremos para
referirnos al árbol. En el ejemplo, ese nodo es el 'A'.

4
Nodo hoja: nodo que no tiene hijos. En el ejemplo hay varios: 'F', 'H', 'I',
'K', 'L', 'M', 'N' y 'O'.

Nodo rama: aunque esta definición apenas la usaremos, estos son los
nodos que no pertenecen a ninguna de las dos categorías anteriores. En
el ejemplo: 'B', 'C', 'D', 'E', 'G' y 'J'.

1.3 Árbol completo

Un árbol completo es aquel en el que en cada nodo o bien todos o


ninguno de los hijos existen. Los árboles se parecen al resto de las
estructuras tratadas en la unidad dos; dado un nodo cualquiera de la
estructura, se puede considerar como una estructura independiente. Es
decir, un nodo cualquiera puede ser considerado como la raíz de un
árbol completo.

Existen otros conceptos que definen las características del árbol, en


relación a su tamaño:

Orden: es el número potencial de hijos que puede tener cada elemento


de árbol. De este modo, se dice que un árbol en el que cada nodo puede
apuntar a otros dos es de orden dos, si puede apuntar a tres será de
orden tres y así sucesivamente.

Frecuentemente, aunque tampoco es estrictamente necesario, para


hacer más fácil moverse a través del árbol, se añade un puntero a cada
nodo que apunte al nodo padre. De este modo se podrá avanzar en
dirección a la raíz, y no sólo hacia las hojas.

Es importante conservar siempre el nodo Raíz ya que es el nodo a partir


del cual se desarrolla el árbol, si se pierde este nodo, se perderá el
acceso a todo el árbol.

1.4 Operaciones básicas con árboles

Se maneja casi el mismo concepto de operaciones de las que se disponía


con las estructuras de datos lineales.

 Añadir o insertar elementos a un árbol.


 Buscar o localizar elementos dentro del árbol.
 Borrar elementos creados en el árbol.
 Moverse a través del árbol por cada uno de sus ramas.
 Recorrer el árbol completo.

5
Los algoritmos de inserción y borrado dependen en gran medida del tipo
de árbol que se esté implementando, de modo que por ahora se dejarán
a un lado y se centrará la atención en el modo de recorrer los árboles.
1.5 Árboles ordenados
Los árboles ordenados son los que tienen más interés desde el punto
de vista de los tipos de datos abstractos (TAD), y los que tienen más
aplicaciones genéricas.

Un árbol ordenado, en general, es aquel que a partir del cual se puede


obtener una secuencia ordenada siguiendo uno de los recorridos
posibles del árbol, es decir en inorden, preorden o post-orden.

En estos árboles es importante que la secuencia se mantenga ordenada,


aunque se añadan o se eliminen nodos.

Existen varios tipos de árboles ordenados, a continuación, se presentan


a nivel informativo:

 Árboles binarios de búsqueda (ABB): son árboles de orden 2 que


mantienen una secuencia ordenada si se recorren en inorden.

 Árboles AVL: son árboles binarios de búsqueda balanceados: es


decir, los niveles de cada rama para cualquier nodo no difieren en
más de 1.

 Árboles perfectamente equilibrados: son árboles binarios de


búsqueda en los que el número de nodos de cada rama para cualquier
nodo no difieren en más de 1. Son por lo tanto árboles AVL también.

 Árboles 2-3: son árboles de orden 3, que contienen dos claves en


cada nodo y que están también equilibrados. También generan
secuencias ordenadas al recorrerlos en inorden.

 Árboles-B: caso general de árboles 2-3, que para un orden M,


contienen M-1 claves”1.

1
http://www.conclase.net/c/edd/index.php?cap=006b.

6
2. Árboles Binarios

Los árboles a diferencia de las listas son una estructura de datos de no


lineal, atendiendo más a una estructura de tipo jerárquico. Los árboles
son, sin duda, una de las estructuras de datos no lineales, empleadas en
informática, tanto para resolver problemas de hardware como de
software. Los árboles de directorios son organizaciones bastante
empleadas por cualquier usuario o programador de una computadora. De
igual manera cumplen un buen papel en la toma de decisiones, valido
como árbol de decisiones.

Los árboles genealógicos y los organigramas son ejemplos comunes.


Entre otras aplicaciones, los árboles se emplean para analizar circuitos
eléctricos y para representar la estructura de fórmulas matemáticas, así
como para organizar la información de bases de datos, para representar
la estructura sintáctica de un programa fuente en compiladores y para la
toma de decisiones.

2.1 Definición de árboles binarios

Los árboles binarios son estructuras de datos muy similares a las listas
doblemente enlazadas, en el sentido que tienen dos punteros que apuntan
a otros elementos, pero no tienen una estructura lógica de tipo lineal o
secuencial como aquellas, sino ramificada. Tienen aspecto de árbol, de
ahí su nombre.

Un árbol binario es una estructura de datos no lineal en la que cada nodo


puede apuntar a uno o máximo a dos nodos. También se suele dar una
definición recursiva que indica que es una estructura compuesta por un
dato y dos árboles. Esto son definiciones simples. Este tipo de árbol se
caracteriza porque tienen un vértice principal y de él se desprende dos
ramas. La rama izquierda y la rama derecha a las que también se les
conoce como subárboles.

Una representación gráfica de la estructura general de un árbol binario se


puede visualizar en la imagen1 que presente a continuación.

Figura 2. Estructura general de un árbol binario

7
La rama izquierda y la derecha, también son dos árboles binarios. El
Vértice principal se denomina raíz y cada una de las ramas se puede
denominar como subárbol izquierdo y subárbol derecho.

Figura 3. Representación gráfica de un árbol binario

Teniendo en cuenta la gráfica del árbol binario de la figura 3 podemos


identificar algunas generalidades y partes del árbol.

Existen otros conceptos que definen las características del árbol, en


relación a su tamaño:

Orden: es el número potencial de hijos que puede tener cada elemento


de árbol. De este modo, se dice que un árbol en el que cada nodo puede
apuntar a otros dos es de orden dos, si puede apuntar a tres será de
orden tres y así sucesivamente.

Grado: el número de hijos que tiene el elemento con más hijos dentro
del árbol. En el árbol del ejemplo en la figura 3, el grado es dos, ya que
tanto ‘A’ como ‘D’ y ‘M’ tienen dos hijos, y no existen elementos con más
de dos hijos.

8
Nivel: se define para cada elemento del árbol como la distancia a la raíz,
medida en nodos. El nivel de la raíz siempre será cero y el de sus hijos
uno. Así sucesivamente. En el ejemplo de la imagen 2, el nodo ‘D’ tiene
nivel 1, el nodo ‘L’ tiene nivel 2.

Altura: la altura de un árbol se define como el nivel del nodo de mayor


nivel. Como cada nodo de un árbol puede considerarse a su vez como la
raíz de un árbol, también se puede hablar de altura de ramas.

Longitud: Longitud es el número de nodos que se deben recorrer para


pasar de un nodo a otro. Por ejemplo:

Figura 4. Longitud del árbol binario

De acuerdo a la figura 4. La longitud entre A y E es 3. La longitud entre


G y G es 0. La longitud entre A y B es 1. Obsérvese que no se puede
calcular la longitud entre B y G ya que el camino BA G no existe.
2.2 Clasificación de los árboles binarios

Árbol binario completo: Un árbol binario completo es aquel en el que todo


nodo no terminal tiene sus dos hijos. El siguiente es un árbol binario
completo de nivel 3

Figura 5. Representación gráfica de un árbol binario completo.

9
Obsérvese que todos los nodos no terminales tienen sus dos hijos. El
máximo número de nodos que puede tener un árbol de nivel n puede
representarse con la siguiente ecuación matemática:

2°+2¹+2²+2³...+2n

Si n es 3 entonces:

2°+2¹+2²+2³ = 15

El árbol de la figura 5, es un árbol binario completo de nivel 3, donde el


número máximo de nodos es 15 tal como lo indica la fórmula matemática.
Árbol binario Igual: Dos árboles son iguales si los dos son vacíos. Existe
otro caso en el cual dos árboles son iguales:

Figura 6. Representación gráfica de Árbol binario igual

Estos árboles son iguales porque sus raíces son iguales y también lo son su
respectivo árbol izquierdo y derecho. Para que un árbol sea igual a otro, es
necesario que el contenido de cada uno de sus respectivos nodos sea el mismo y
que tengan las mismas relaciones de parentesco.

Árbol Binario Semejante: Dos árboles binarios son semejantes si tienen el


mismo número de nodos y los valores de los nodos del primer árbol son los mismos
que los valores de los nodos del segundo, sin importar la relación de parentesco
entre ellos. Por ejemplo:

10
Figura 7. Representación gráfica de árboles semejantes

Estos árboles son semejantes. Contienen los mismos valores en cada uno de sus
nodos.

Árbol Binario Isomorfo: Dos árboles binarios son isomorfos si tienen la misma
estructura, aunque el contenido de cada uno de sus nodos sea diferente. Por
ejemplo, los siguientes árboles son isomorfos.

Figura 8. Representación gráfica de árboles isomorfos

Peso: El peso de un árbol en un nodo dado es el número de nodos en el árbol sin


contarse el mismo. Por ejemplo, teniendo como referente los árboles de la figura 8,
se tiene que el peso de cualquiera de los dos árboles cuya raíz es A, corresponde
al número de nodos para cada árbol es 6. Mientras que cualquiera de los nodos B
y C tienen un peso de 2.

2.2 Formas de Recorrer un árbol binario

Los árboles binarios, son estructuras de datos no lineales, son


considerados como estructuras jerárquicas y como tal su forma de
recorrerlos difiere sustancialmente en comparación con las listas
enlazadas que son estructuras de datos de tipo lineal. En ese orden de
ideas, el recorrido de un árbol binario se lleva a cabo en tres sentidos:
Preorden, Inorden y Postorden. A continuación, se detalla cada caso.

11
Recorrido en Preorden

Recorrer un árbol en preorden consiste en primer lugar, examinar el dato


del nodo raíz, posteriormente se recorrer el subárbol izquierdo en
preorden y finalmente se recorre el subárbol derecho en preorden. Esto
significa que para cada subárbol se debe conservar el recorrido en
preorden, primero la raíz, luego la parte izquierda y posteriormente la
parte derecha.

Figura 9. Representación gráfica del árbol binario y su recorrido en


preorden

Veamos cómo se realiza el recorrido paso a paso según la gráfica del árbol
de la figura 9:

El recorrido inicia con el subárbol izquierdo, el primer nodo a visitar es la


raíz que es el nodo 10, luego se visita el subárbol izquierdo con el nodo
5, posteriormente el 3, luego el nodo 1, sigue con el nodo 4, pasamos al
nodo 7 y luego el 9.

Continuamos con el recorrido del subárbol derecho en preorden, con la


visita del nodo 15, luego el 14, se continúa con el 17, se visita el 16 y se
finaliza con la visita del nodo 20.

El resultado completo del recorrido en preorden para el árbol de la


imagen es: 10 – 5 – 3 – 1 – 4 – 7 – 9 – 15 – 14 – 17 -16 – 20, Tal como
se muestra en la imagen 3.

Recorrido en Inorden

Recorrer un árbol en Inorden consiste en primer lugar en recorrer el


subárbol izquierdo en Inorden, luego se examina el dato del nodo raíz, y

12
finalmente se recorre el subárbol derecho en Inorden. Esto significa que
para cada subárbol se debe conservar el recorrido en Inorden, es decir,
primero se visita la parte izquierda, luego la raíz y posteriormente la parte
derecha.

Figura 10. Representación gráfica del árbol binario y su recorrido en


Inorden

Veamos cómo se realiza el recorrido paso a paso según la gráfica del árbol
de la figura 10:

El recorrido inicia con el subárbol izquierdo, el primer nodo a visitar es


el 3 luego se visita el 5 y posteriormente el 7, con esto se garantiza que
el recorrido del subárbol izquierdo se hizo en Inorden.

Finalizado el recorrido del subárbol izquierdo se visita el nodo de la raíz,


que para este caso es el número 10.

Solo queda recorrer el subárbol derecho en Inorden, es decir se visita el


11 luego el 12 y se finaliza con la visita del nodo 15

El resultado completo del recorrido en Inorden para el árbol de la imagen


es:3 – 5 – 7 – 10 – 11 – 12 – 15, Tal como se muestra en la imagen.

Recorrido en Postorden

Recorrer un árbol en Postorden consiste en primer lugar en recorrer el


subárbol izquierdo en Postorden, luego se recorre el subárbol derecho
en Postorden y finalmente se visita el nodo raíz. Esto significa que para
cada subárbol se debe conservar el recorrido en Postorden, es decir,
primero se visita la parte izquierda, luego la parte derecha y por último la
raíz.

Figura 11. Representación gráfica del árbol binario y su recorrido en


postorden

13
Veamos cómo se realiza el recorrido paso a paso según la gráfica del árbol
de la figura 11.

El recorrido inicia con el subárbol izquierdo, el primer nodo a visitar es


el 3 luego se visita el 7 y posteriormente el 5 que es la raíz, con esto se
garantiza que el recorrido del subárbol izquierdo se hizo en Postorden.

Finalizado el recorrido del subárbol izquierdo se inicia la visita al subárbol


derecho en Postorden, es decir, se visita el 11 luego el 15 y se finaliza
con la visita del nodo 12 que sería la raíz de este subárbol.

Solo queda recorrer la raíz del árbol que para este caso es el número 10.

El resultado completo del recorrido en Postorden para el árbol de la


imagen es:

3 – 7– 5 – 11 – 15 – 12 – 10 Tal como se muestra en la figura.

3. Árbol binario de búsqueda (ABB)

Los árboles binarios de búsqueda, son un tipo especial de árbol binario


cuya característica radica en la forma ordenada de insertar sus elementos,
facilitando así la búsqueda de un nodo en particular. Para puntualizar aún
más, se tratarán los árboles binarios de búsqueda, en los que se tiene
preestablecido un cierto orden, que seguramente ayudará a encontrar un
cierto dato dentro de un árbol con mucha rapidez.

La pregunta sería; ¿cómo es este orden prefijado o preestablecido? La


respuesta es sencilla y entenderlo es aún más, Solo se debe cumplir la
condición que para cada nodo se tiene que:

 la rama de la izquierda contendrá elementos menores.


 la rama de la derecha contendrá elementos mayores.

14
Un ejemplo sería la forma más sencilla de explicarlo y
comprenderlo. Partimos de la siguiente gráfica del árbol binario de
Búsqueda para identificar los recorridos.

Figura 12. Gráfica de un árbol binario de búsqueda

Partiendo de la gráfica del árbol de la figura 12, realizaremos los tres


recorridos, conservando el orden correspondiente para cada uno.

Recorrido en preorden:
20 – 13 – 9 – 6 – 10 – 18 – 14 – 17 – 32 – 26 – 24 – 29 – 36 – 34 – 40

Recorrido en inorden:
6 – 9 – 10 – 13 – 14 – 18 – 17 – 20 – 24 – 26 – 29 – 32 – 34 – 36 – 40

Recorrido en postorden:
6 – 10 – 9 – 14 – 17 – 18 – 13 – 24 – 29 – 26 – 34 – 40 – 36 – 32 – 20

3.1 Más acerca de árboles binarios de búsqueda (ABB)

En el ejemplo anterior se partió de la gráfica del árbol para encontrar sus


recorridos, en este ejemplo partiremos de los datos del árbol para realizar
la gráfica del árbol binario de búsqueda. Tal como se ha mantenido la
metodología a lo largo del curso, un ejemplo sería la forma de explicarlo.

Manos a la obra…
Se tienen los siguientes datos de tipo numérico para crear con ellos un
árbol binario de búsqueda.

15
Datos para construir el ABB: 5 – 3 – 7 – 2 – 4 – 8 - 9

El primer nodo siempre será asignado a la raíz del árbol binario de


búsqueda, así que para este caso el 5 es la raíz del árbol.

5
Primer número: 5 (directo)

Segundo número: 3 se interroga (3 es menor que 5) la respuesta es sí,


entonces va al lado izquierdo de 5.
5

Tercer número: 7 (7 es mayor que 5) se inserta al lado derecho de 5,


con ello se va construyendo el árbol.
5

3 7

Cuarto número: 2 (2 es menor que 5, y menor que 3) entonces va al


lado izquierdo del 3.
5

3 7

Quinto número: 4 (4 es menor que 5 pero es mayor que 3) entonces va


al lado derecho del 3. Nada complicado.

3 7

2 4
3

16
Sexto número: 8 (8 es mayor que 5 y mayor que 7) en este caso se
ingresa al lado derecho de 7.
5

3 7

2 4 8
3 7
Séptimo número: 9 (9 es mayor que 5, es mayor que 7 y es mayor que
8) en este caso se ingresa al lado derecho del número 8 formando de esta
manera el árbol binario de búsqueda.

3 7

2 4 8
3 7 7

2.5.1 Ventajas de los árboles binarios de búsqueda

Para este tipo de árbol es muy evidente la rapidez con que se podría
encontrar un el valor de un nodo; para este caso se tienen 7 elementos
de tipo numérico no ordenados, lo que en una lista supone que si se busca
un dato que casualmente está al final, se harían 7 comparaciones; en este
árbol, dado que este árbol es de altura 4, se tienen que realizar 4
comparaciones como máximo.

Y si además se hubiera equilibrado el árbol, es decir, irlo reacomodando


de modo que siempre tenga la menor altura posible, habría quedado con
una altura igual 3.

Esto es lo que se hace en la práctica cuando en el árbol se va a hacer


muchas más lecturas que escrituras: se reordena internamente después
de añadir cada nuevo dato, de modo que la altura sea mínima en cada
caso.

17
De este modo, el número máximo de comparaciones que se tendrían que
hacer sería representado por la expresión matemática log2(n), lo que
supone que, si se tienen 500 datos, en una lista se podría llegar a tener
que hacer 500 comparaciones, y en un árbol binario de búsqueda,
log2(1000) = 10 comparaciones como máximo. La ganancia en velocidad
de búsqueda es clara.

Habiendo conceptualizado la teoría de un árbol binario de búsqueda, la


tarea sería desarrollar un programa en modo gráfico de C++ para que, al
insertar los datos ingresados por teclado en tiempo de ejecución, se
imprima en pantalla la gráfica del árbol binario de búsqueda.

Fuentes bibliográficas

Mosquera, H. (2013). Arboles Binarios. Teoría general de árboles binarios.


Estructura de datos en C++. Espacio de formación y aprendizaje virtual.
Recuperado de: http://hhmosquera.wordpress.com/arbolesbinarios/

Pozo, S. (2001). Estructuras de datos. Capítulo 6. Árboles. C++ Con


clase. Recuperado de: http://c.conclase.net/edd/?cap=006#inicio

18

También podría gustarte