Está en la página 1de 7

Método del árbol

¿Qué es un árbol?

Un árbol es una Estructura de datos ampliamente usados que emulan la forma de un árbol
(conjunto de nodos conectados).

NODO
Un nodo es la unidad sobre la que se construye el árbol y puede tener desde cero o mas
nodos hijos conectados a el.

Se dice que un nodo “a” es Padre de un nodo “b” si es que existe un enlace entre “a” y “b”
(en este caso también decimos que “b” es el hijo de “a”). Solo puede haber un único nodo sin
padres, que llamaremos raíz. Un nodo que tiene hijos se conoce como Hoja. Los demás
nodos (también padres y uno o varios hijos) se les conocen como Rama.

Cuando un árbol tiene 0 relaciones se llama nodo hoja. Si tiene un número finito de
relaciones, cada una de esas relaciones es un subárbol.

Padre

Hijo Hijo

La terminología que por lo regular se utiliza para el manejo de arboles es la siguiente:


 HIJO. X es hijo de Y, sí y solo sí el nodo X es apuntado por Y. También se dice que X
es descendiente directo de Y.
 PADRE. X es padre de Y sí y solo sí el nodo X apunta a Y. También se dice que X es
antecesor de Y.
 HERMANO. Dos nodos serán hermanos si son descendientes directos de un mismo
nodo.
 HOJA. Se le llama hoja o terminal a aquellos nodos que no tienen ramificaciones (hi-
jos).
 NODO INTERIOR. Es un nodo que no es raíz ni terminal.
 GRADO. Es el número de descendientes directos de un determinado nodo.
 GRADO DEL ARBOL Es el máximo grado de todos los nodos del árbol.
 NIVEL. Es el número de arcos que deben ser recorridos para llegar a un determinado
nodo. Por definición la raíz tiene nivel 1.
 ALTURA. Es el máximo número de niveles de todos los nodos del árbol.
 PESO. Es el número de nodos del árbol sin contar la raíz.
 LONGITUD DE CAMINO. Es el número de arcos que deben ser recorridos para llegar
desde la raíz al nodo X. Por definición la raíz tiene longitud de camino 1, y sus des-
cendientes directos longitud de camino 2 y
Árboles Binarios

Existe un tipo de árbol denominado árbol binario que puede ser implementado fácilmente en
una computadora.
Un árbol binario es un conjunto finito de cero o más nodos tales que:
Existe un nodo denominados raíz del árbol
Cada nodo puede tener 0, 1 o 2 subárboles, conocidos como subárbol izquierdo y subárbol
derecho
Clasificación de Arboles Binarios
Existen cuatro tipos de árbol binario:.
 A. B. Distinto.
 A. B. Similares.
 A. B. Equivalentes.
 A. B. Completos.
A continuación se hará una breve descripción de los diferentes tipos de árbol binario así co-
mo un ejemplo de cada uno de ellos.
A. B. DISTINTO
Se dice que dos árboles binarios son distintos cuando sus estructuras son diferentes. Ejem-
plo:

A. B. SIMILARES
Dos arboles binarios son similares cuando sus estructuras son idénticas, pero la información
que contienen sus nodos es diferente. Ejemplo:

A. B. EQUIVALENTES
Son aquellos arboles que son similares y que además los nodos contienen la misma informa-
ción. Ejemplo:
A. B. COMPLETOS
Son aquellos arboles en los que todos sus nodos excepto los del ultimo nivel, tiene dos hijos;
el subarbol izquierdo y el subarbol derecho.

Terminología de los árboles binarios


Dos árboles se dicen que son similares si tienen la misma estructura, y son equivalentes si
son similares y contienen la misma información.
Un árbol binario esta equilibrado si las alturas de los dos subárboles de cada nodo del árbol
se diferencias en una unidad como máximo.
La representación gráfica de un árbol binario es la siguiente:

Un árbol binario es un árbol con raíz en el que cada nodo tiene como máximo dos hijos.
Un árbol binario lleno es un árbol en el que cada nodo tiene cero o dos hijos.
Un árbol binario perfecto es un árbol binario lleno en el que todas las hojas (vértices con cero
hijos) están a la misma profundidad (distancia desde la raíz, también llamada altura).
A veces un árbol binario perfecto es denominado árbol binario completo. Otros definen un
árbol binario completo como un árbol binario lleno en el que todas las hojas están a
profundidad n o n-1, para alguna n.

Conversión de un árbol General a Binario.


Existe una técnica para convertir árbol general a binario para ello, debemos seguir los pasos
que se describen a continuación:
1.Enlazar el nodo raíz con el camino que conecta el nodo mas a la izquierda (su hijo)
2.Debe eliminarse el vínculo de ese padre con el resto de sus hijos y enlazar los nodos
hermanos en una sola línea con el fin de formar un solo nivel
3.Rotar el diagrama resultante aproximadamente 45 grados hacia la izquierda, y así se
obtendrá el árbol binario correspondiente.
Recorrido de un árbol
Una de las operaciones mas importantes a realizar en un árbol binario es el recorrido de los
mismos, recorrer significa visitar los nodos del árbol en forma sistemática, de tal manera que
todos los nodos del mismo sean visitados una sola vez.
Hay tres manera de recorrer un árbol : en inorden, preorden y postorden. Cada una de ellas
tiene una secuencia distinta para analizar el árbol como se puede ver a continuación:
1. INORDEN
o Recorrer el subarbol izquierdo en inorden.
o Examinar la raíz.
o Recorrer el subarbol derecho en inorden.
2. PREORDEN
o Examinar la raíz.
o Recorrer el subarbol izquierdo en preorden.
o recorrer el subarbol derecho en preorden.
3. POSTORDEN
o Recorrer el subarbol izquierdo en postorden.
o Recorrer el subarbol derecho en postorden.
o Examinar la raíz.
o
A continuación se muestra un ejemplo de los diferentes recorridos en un árbol binario.

Inorden: G-D-B-H-E-I-A-C-J-K-F
Preorden: A-B-D-G-E-H-I-C-F-J-K
Postorden: G-D-H-I-E-B-K-J-F-C-A
Operación “buscar”
public boolean buscar(Object o)
{
if (o.equals(valor))
return true;
else if (o.compareTo(valor)<0)
return buscar(getIzq(),o);
else return buscar(getDer(),o);
}
Operación “insertar”
public NodoBinario insertar(Comparable o){
if (o.compareTo(valor)<0)
setIzq(insertar(getIzq(),o));
else setDer(insertar(getDer(),o));
return this;
}
Dentro de la clase NodoBinarioVacio:
public NodoBinario insertar(Comparable o)
{
return new NodoBinario(o);
}
Operación “recorrer”
Los recorridos pueden ser en preorden, postorden o inorden (orden simétrico). Todos son
O(N).
public void preOrder(SList aList)
{
aList.addElement(value);
left.preOrder(aList);
right.preOrder(aList);
}
public void inOrder(SList aList)
{
left.inOrder(aList);
aList.addElement(value);
right.inOrder(aList);
}
public void posOrder(SList aList)
{
left.posOrder(aList);
right.posOrder(aList);
aList.addElement(value);
}
Los recorridos no necesitan obligatoriamente recursividad, se puede emplear una pila para
realizarlos iterativamente.
Operación “borrado”
El nodo a borrar debe ser reemplazado por el nodo más a la derecha en el subárbol izquierdo
o el nodo más a la izquierda en el subárbol derecho (el nodo más a la derecha del subárbol
izquierdo será mayor o igual que cualquier otro nodo de ese subárbol y menor que todos los
del subárbol derecho, y el nodo más a la izquierda del subárbol derecho será menor que
todos los demás nodos de ese subárbol y mayor que todos los del subárbol izquierdo). Para
el caso en el que el nodo elegido tengo un subárbol, hay por lo menos tres soluciones
posibles:
 La primera consiste en conservar la estructura del subárbol, y colgar del elemento ubi-
cado en el extremo (el elemento menor o mayor) correspondiente al subárbol donde
se encuentra el elemento a promover hacia la raíz (en este ejemplo, el subárbol iz-
quierdo, por lo cual se buscará el elemento más a la izquierda), lo cual es consistente,
porque todos los elementos en el subárbol promovido serán mayores que los del
subárbol del cual estaban colgados a la derecha. El inconveniente que presenta esta
solución es que debe utilizarse una función encontrarMínimo() o encontrarMáximo().
 La segunda solución consiste en colgar del padre del nodo promovido hacia la raíz, el
subárbol remanente. Esto es consistente, porque todo elemento del subárbol derecho
de un nodo será mayor que el valor de ese nodo, y viceversa. Estas soluciones apro-
vechan la ventaja de contar con que el nodo promovido tiene, a lo sumo, un subárbol.
 Un hueco dejado por un nodo promovido también puede pensarse como una elimina-
ción.
Arboles Enhebrados
Existe un tipo especial de árbol binario llamado enhebrado, el cual contiene hebras que pue-
den estar a la derecha o a la izquierda. El siguiente ejemplo es un árbol binario enhebrado a
la derecha.

 ARBOL ENHEBRADO A LA DERECHA. Este tipo de árbol tiene un apuntador a la


derecha que apunta a un nodo antecesor.
 ARBOL ENHEBRADO A LA IZQUIERDA. Estos arboles tienen un apuntador a la iz-
quierda que apunta al nodo antecesor en orden
Arboles binarios de busqueda
Un árbol de búsqueda binaria es una estructura apropiada para muchas de las aplicaciones
que se han discutido anteriormente con listas. La ventaja especial de utilizar un arbol es que
se facilita la búsqueda.

Un árbol binario de búsqueda es aquel en el que el hijo de la izquierda (si existe) de cualquier
nodo contiene un valor más pequeño que el nodo padre, y el hijo de la derecha (si existe)
contiene un valor más grande que el nodo padre.

Un ejemplo de arbol binario de búsqueda es el siguiente:

También podría gustarte