Anda di halaman 1dari 8

ARBOL BINARIO

1. DEFINICION
Un rbol es una estructura de datos no lineal y homognea en el que cada
elemento puede tener varios elementos posteriores, pero tan slo puede tener un
elemento anterior.

Los rboles no son ms que un tipo especial de grafo en el que cada elemento
puede tener varios posteriores, pero tan slo puede tener un elemento anterior.
Tanto grafos como rboles son estructuras no lineales.

2. TERMINOLOGIA BASICA

Asociados al concepto de rbol, existen toda una serie de trminos que es
necesario conocer para manejar esta clase de estructura de datos. Supongamos
los siguientes ejemplos de rboles:


Nodo Padre de un nodo N es aquel que apunta al mismo. En un rbol cada nodo
slo puede tener un padre. En el ejemplo 1, A es el padre de B y C, y a su vez, B
es el padre de D.
Nodo Hijo de otro nodo A es cualquier nodo apuntado por el nodo A. Un
nodo puede tener varios hijos. En el ejemplo 1, B y C son los nodos hijos
de A y todos los nodos tienen uno o dos hijos.
Nodo Raz es el nico del rbol que no tiene padre. En la representacin
que hemos utilizado, el nodo raz es el que se encuentra en la parte
superior del rbol: A.
Hojas son todos los nodos que no tienen hijos. En la representacin del
ejemplo 1 son hojas los nodos situados en la parte inferior: D, G, H y F.
Nodos Interiores son los nodos que no son ni el nodo raz, ni nodos hoja.
En el ejemplo 1, son nodos interiores B, C y E.
Camino es una secuencia de nodos, en el que dos nodos consecutivos
cualesquiera son padre e hijo. En el ejemplo 1 A-B-D es un camino, al igual
que E-G y C-E-H.
Rama es un camino desde el nodo raz a una hoja. En el ejemplo 1, A-C-E-
G y AC- F son ramas.

Altura es el mximo nmero de nodos de las ramas del rbol. Dicho en
otros trminos, el mximo nmero de nodos que hay que recorrer para
llegar de la raz a una de las hojas. La altura del rbol del ejemplo 1 es 4,
ya que esa es la longitud de la rama A-C-E-H, que junto a A-C-E-G son las
dos ms largas.
Grado es el nmero mximo de hijos que tienen los nodos del rbol. As, en
el ejemplo anterior el rbol es de grado dos. Dmonos cuenta de que una
lista no es ms que un rbol de grado uno, tal y como podemos ver en los
ejemplos 2 y 3.
Nivel de un nodo, es el nmero de nodos del camino desde la raz hasta
dicho nodo. En el rbol del ejemplo 1, A tiene nivel 1; B y C tienen nivel 2;
D, E y F tienen nivel 3 y G y H tienen nivel 4.
Bosque coleccin de dos o ms rboles. Un ejemplo de bosque sera el
siguiente:




3. IMPLEMENTACION DEL ARBOL BINARIO

Al igual que ocurre en el caso de las listas, podemos implementar un rbol binario
mediante estructuras estticas o mediante estructuras dinmicas. En ambos
casos, cada nodo del rbol contendr tres valores:
La informacin de un tipo base dado contenida en el nodo.
Un enlace al hijo derecho (raz del subrbol derecho)
Un enlace al hijo izquierdo (raz del subrbol izquierdo)
Grficamente:

4. RECORRIDO DE UN ARBOL BINARIO

Recorrer un rbol consiste en acceder una sola vez a todos sus nodos. Esta
operacin es bsica en el tratamiento de rboles y nos permite, por ejemplo,
imprimir toda la informacin almacenada en el rbol, o bien eliminar toda esta
informacin o, si tenemos un rbol con tipo base numrica, sumar todos los
valores...
En el caso de los rboles binarios, el recorrido de sus distintos nodos se debe
realizar en tres pasos:
acceder a la informacin de un nodo dado,
acceder a la informacin del subrbol izquierdo de dicho nodo,
acceder a la informacin del subrbol derecho de dicho nodo.
Imponiendo la restriccin de que el subrbol izquierdo se recorre siempre antes
que el derecho, esta forma de proceder da lugar a tres tipos de recorrido, que se
diferencian por el orden en el que se realizan estos tres pasos. As distinguimos:
a) Preorden: primero se accede a la informacin del nodo, despus al
subrbol izquierdo y despus al derecho. (Raiz.Izquierda.Derecha)



b) Inorden: primero se accede a la informacin del subrbol izquierdo,
despus se accede a la informacin del nodo y, por ltimo, se accede a la
informacin del subrbol derecho. (Izquierda.Raiz.Derecha)


c) Postorden: primero se accede a la informacin del subrbol izquierdo,
despus a la del subrbol derecho y, por ltimo, se accede a la informacin
del nodo.


Si el nodo del que hablamos es la raz del rbol, estaremos recorriendo todos sus
nodos. Debemos darnos cuenta de que esta definicin del recorrido es claramente
recursiva, ya que el recorrido de un rbol se basa en el recorrido de sus
subrboles izquierdo y derecho usando el mismo mtodo. Aunque podramos
plantear una implementacin iterativa de los algoritmos de recorrido, el uso de la
recursin simplifica enormemente esta operacin.
As pues, utilizando la recursividad, podemos plantear la siguiente implementacin.


package nodo;
public class Nodo {
public int info;
public Nodo izquierda;
public Nodo derecha;
public Nodo(int info){
this.info=info;
izquierda=null;
derecha=null;
}
public void insertarIzquierda(Nodo referencia, int info){
Nodo nuevo=new Nodo(info);
referencia.izquierda=nuevo;
}
public void insertarDerecha(Nodo referencia, int info){
Nodo nuevo=new Nodo(info);
referencia.derecha = nuevo;
}
public void preOrden(Nodo raiz){
if(raiz!=null){
System.out.print(" - "+raiz.info);
preOrden(raiz.izquierda);
preOrden(raiz.derecha);
}
}
}

package vista;

import nodo.Nodo;
public class Principal {

public static void main(String[] args) {
Nodo raiz=new Nodo(3);
raiz.insertarIzquierda(raiz, 2);
raiz.insertarDerecha(raiz, 4);

raiz.insertarIzquierda(raiz.izquierda, 3);
raiz.insertarDerecha(raiz.izquierda, 5);

raiz.insertarIzquierda(raiz.derecha, 7);
raiz.insertarDerecha(raiz.derecha, 9);

raiz.insertarIzquierda(raiz.derecha.derecha, 5);
raiz.insertarDerecha(raiz.derecha.izquierda, 8);


raiz.preOrden(raiz);
}
}

5. INSERCION DE UN ELEMENTO

La operacin de insercin de un nuevo nodo en un rbol binario de bsqueda
consta de tres fases bsicas:
i. Creacin del nuevo nodo
ii. Bsqueda de su posicin correspondiente en el rbol. Se trata de encontrar
la posicin que le corresponde para que el rbol resultante siga siendo de
bsqueda.
iii. Insercin en la posicin encontrada. Se modifican de modo adecuado los
enlaces de la estructura.
La creacin de un nuevo nodo supone simplemente reservar espacio para el
registro asociado y rellenar sus tres campos.
Dado que no nos hemos impuesto la restriccin de que el rbol resultante sea
equilibrado, consideraremos que la posicin adecuada para insertar el nuevo nodo
es la hoja en la cual se mantiene el orden del rbol. Insertar el nodo en una hoja
supone una operacin mucho menos complicada que tener que insertarlo como un
nodo interior y modificar la posicin de uno o varios subrboles completos.
La insercin del nuevo nodo como una hoja supone simplemente modificar uno de
los enlaces del nodo que ser su padre.

Anda mungkin juga menyukai