Está en la página 1de 7

TECNOLÓGICO NACIONAL DE MÉXICO ING.

EN SISTEMAS COMPUTACIONALES

4. ESTRUCTURAS NO LINEALES

ÁRBOLES

El Árbol es una estructura de datos no lineal ya que a cada uno de sus elementos pueden seguirle
varios. Un árbol es una estructura de almacenamiento de tipo jerárquico que consiste en una colección
de elementos llamados nodos en donde el primero de ellos se denomina raíz y un conjunto de líneas
dirigidas llamadas ramas. Un árbol tiene un número finito de elementos que a la vez forman
subárboles.

Dentro de las aplicaciones más importantes de los árboles se encuentran la representación de


complejas fórmulas matemáticas, algoritmos de cifrado, la organización de información que requiere
numerosas búsquedas y la manipulación de la información en el campo de la inteligencia artificial.

Terminología
Raíz. Primer nodo de un árbol.
Ramas. Flechas que conectan con otro nodo.
Hojas. Nodo terminal (que no tiene ramas)
Nodo interno. Nodo que no es hoja.
Padre. Nodo que tiene al menos una rama.
Hijo. Nodo que viene de una conexión con otro nodo.
Camino. Secuencia de nodos que van de uno a otro.
Longitud de un camino. Número de nodos del camino menos uno.
Nivel del nodo. Longitud del camino del nodo que lo conecta al nodo raíz.
Profundidad o altura del árbol. Longitud del camino mas largo que conecta una hoja a la raíz.

Clasificación
Los árboles se pueden clasificar de muchas formas. El criterio más importante para esto es el número
máximo de hijos que cada nodo del árbol puede tener, a este valor se le denomina orden.

a) Árbol general: Es aquel que no tiene ningún límite en lo que respecta al número de hijos que
puede tener cada nodo como lo muestra la figura 1.

Figura 1. Árbol General

b) Árbol binario: Son de particular importancia en el área de la informática y son aquellos en


los que cada nodo puede tener como máximo dos hijos, hijo izquierdo e hijo derecho. Se
conoce como una estructura recursiva.

ESTRUCTURAS DE DATOS
TECNOLÓGICO NACIONAL DE MÉXICO ING. EN SISTEMAS COMPUTACIONALES

Figura 2. Árbol Binario

c) Árbol equilibrado o balanceado: Es aquel en el que todas las hojas se encuentran en el


mismo nivel o como máximo con solo un nivel de diferencia entre ellas.

Árbol Binario de búsqueda


Es un tipo de árbol binario en el cual se pueden realizar de manera más eficiente las operaciones
básicas. La característica de este árbol, figura 3, es que todos los elementos menores a un nodo
deben de estar situados en el subárbol izquierdo y los elementos mayores o iguales en el subárbol
derecho. La conexión o enlace de un nodo a otro, es decir, de padre a hijo, es mediante una referencia.

Árbol Binario de Búsqueda con los siguientes números como parte de cada nodo:

10, 5, 9, 7, 2, 12, 10

Nivel 0
10

5 12 Nivel 1

2 9 10 Nivel 2

7 Nivel 3

Figura 3. Representación gráfica del Árbol Binario de Búsqueda

Operaciones básicas o primitivas de un árbol son:


a) Inserción de un nodo.
b) Búsqueda de un nodo.
c) Eliminación de un nodo.
d) Recorrido del árbol.

Inserción de un nodo
La inserción de un nodo debe considerar el orden de los elementos.

• Si el árbol está vacío, el nodo a insertar será el nodo raíz.

ESTRUCTURAS DE DATOS
TECNOLÓGICO NACIONAL DE MÉXICO ING. EN SISTEMAS COMPUTACIONALES

• Si el árbol no está vacío, entonces la clave del elemento a insertar se compara con la
de la raíz, si es menor se debe ir hacia la rama izquierda, en este caso si ya no hay un
hijo izquierdo, el nodo se puede insertar, haciendo la conexión del nodo izquierdo hacia
el nodo nuevo.
• Si sí hay un hijo izquierdo, se repite el proceso preguntando si la clave es igual.
• El mismo procedimiento aplica si la clave es mayor o igual ahora yendo hacia el hijo
derecho.

Al inserta el nodo con la clave 11, es mayor que el 10 (raíz), se va a la derecha, es menor que el 12,
se va a la izquierda, es mayor que el 10, se va a la derecha. Como ya no hay hijo derecho, se inserta
como lo muestra la figura siguiente.

10

5 12

2 9 10

7 11
1
1
1 de Búsqueda
Figura 4. Inserción en Árbol Binario

Búsqueda de un nodo
La búsqueda, como la inserción inicia en el nodo raíz con los siguientes pasos:

1) La clave a buscar se compara con la clave del nodo raíz.


2) Si las claves son iguales, la búsqueda termina.
3) Si la clave a buscar es mayor que la clave del nodo raíz, la búsqueda se reanuda en el
subárbol derecho. Si la clave a buscar es menor que la clave del nodo raíz, la búsqueda se
reanuda con el subárbol izquierdo.

Recorrido de un árbol

Se denomina recorrido de un árbol al proceso que permite acceder solo una vez a cada uno de los
nodos del árbol, existen dos formas de recorrer un árbol:

a) Recorrido por anchura: Es aquel en donde los nodos se van accesando por orden de nivel,
es decir el primer nodo (raíz) seria del nivel 0, los siguientes dos nodos, del nivel 1 y así
sucesivamente. En el árbol de la figura 4, el recorrido queda: 10, 5, 12, 2, 9, 10, 7, 11.
b) Recorrido por profundidad: En este tipo de recorrido existen tres algoritmos conocidos.
Preorden, Inorden y Posorden. El prefijo de cada nombre indica el momento en el que se
accesa la información del nodo, es decir; antes, en medio y después. Los algoritmos son los
siguientes:

ESTRUCTURAS DE DATOS
TECNOLÓGICO NACIONAL DE MÉXICO ING. EN SISTEMAS COMPUTACIONALES

PREORDEN:
Acceso al nodo.
Recorrido en Preorden, por subárbol izquierdo.
Recorrido en Preorden, por subárbol derecho.
== 10, 5, 2, 9, 7, 12, 10, 11

INORDEN:
Recorrido inorden, por subárbol izquierdo.
Acceso al nodo.
Recorrido inorden, por subárbol derecho.
== 2, 5, 7, 9, 10, 10, 11, 12

POSTORDEN:
Recorrido en Postorden, por subárbol izquierdo.
Recorrido en Postorden, por subárbol derecho.
Acceso al nodo.
== 2, 7, 9, 5, 11, 10, 12, 10.

Como se observa, los procedimientos son por naturaleza recursivos, ya que, en dos de las líneas o
acciones, se debe realizar nuevamente el recorrido para resolver un recorrido menor, por el subárbol
izquierdo o derecho.

Si tenemos que el recorrido se utiliza para desplegar información, el código para el método Inorden
queda de la siguiente forma:

public void inorden (Nodo nodo)


{
if(nodo!=null)
{
inorden(nodo.getIzquierdo());
System.out.println("Numero: "+ nodo.getNum());
inorden(nodo.getDerecho());
}
}

Eliminación de un nodo
La eliminación de un elemento en el árbol debe conservar su orden. Se deben de tomar en cuenta
tres diferentes casos según la posición del elemento o nodo que se va a eliminar dentro del árbol.

1. Si el nodo es una hoja, simplemente se suprime. Dejando nulo el hijo izquierdo o


derecho del padre, según sea el caso. Figura 5.
2. Si el nodo tiene un solo hijo, ese hijo sustituye al nodo.
3. Si el nodo tiene dos hijos existen dos opciones:
a) Se sustituye por el elemento inferior situado lo más a la izquierda posible de su hijo
derecho.
b) Se sustituye por el elemento inferior situado lo más a la derecha posible de su hijo
izquierdo.

Para poder realizar las acciones que eliminen un nodo será necesario conocer la siguiente
información del nodo a eliminar:

1. Conocer su posición en el árbol.


2. Conocer la referencia de su padre.
ESTRUCTURAS DE DATOS
TECNOLÓGICO NACIONAL DE MÉXICO ING. EN SISTEMAS COMPUTACIONALES

3. Identificar si el nodo tiene hijos, si son 1 o 2, si es 1 solo hijo saber si es el hijo izquierdo o
derecho.

1) Caso Hoja. Se elimina el nodo 12 dejando nulo el hijo izquierdo del 20. Solo se necesita
saber que hijo es el nodo a eliminar.

4
4
1 20
1 20
49
49
12
99
99

2) Caso con un hijo. Se elimina el nodo 22 y el 12 lo sustituye. Se debe checar que hijo es el
nodo a eliminar, izquierdo o derecho y cuál es el hijo que tiene el nodo a eliminar (izquierdo
o derecho).

4 4

2 27 2 27

49 49
22 12

12 99 99

3) Caso con dos hijos. Puede implementarse cualquiera de los dos casos siguientes.
a) El más a la izquierda posible del hijo derecho del nodo a eliminar, sustituye al que se
elimina. Se elimina el 3 y el 4 lo sustituye.

12
12

3 4 19
19

2 8 21
2 8 21

10
4 10

ESTRUCTURAS DE DATOS
TECNOLÓGICO NACIONAL DE MÉXICO ING. EN SISTEMAS COMPUTACIONALES

Si el último nodo a la izquierda tiene un hijo derecho, ese debe tomar el lugar de su padre
(el último nodo a la izquierda).

12
12

3 4 19
19

2 8 21
2 8 21

6 10
4 10

b) El más a la derecha posible del hijo izquierdo del nodo a eliminar, sustituye al que se
elimina. Se elimina el 8 y el 7 lo sustituye, debido a que el 7 tiene un hijo izquierdo, este
lo sustituye.

16 16

8 18 7 18

4 10 4 10

2 5 2 5

7 6

ESTRUCTURAS DE DATOS
TECNOLÓGICO NACIONAL DE MÉXICO ING. EN SISTEMAS COMPUTACIONALES

REFERENCIAS

[1] F. J. Ceballos, Java 2 Curso de Programación, México: Ra-Ma, 2017.

[2] L. Joyanes Aguilar y I. Zahonero Martínez, Estrucuras de Datos en Java, Madrid: Mc Graw
Hill, 2008.

[3] S. Guardati, Estructura de datos básicas, México: Alfaomega, 2016.

ESTRUCTURAS DE DATOS

También podría gustarte