You are on page 1of 24

Introduccin a rboles

Prof. Jos Snchez


Introduccin a rboles
rboles generales
Terminologa y representacin de un rbol general
Tipos de rboles
rboles binarios
Recorridos en rboles binarios
rboles binarios de bsqueda
Insertar un nodo
Eliminar un nodo
rboles generales
Estructuras de datos no lineal que representan datos que
poseen una relacin jerrquica rbol genealgico, cargos en
una empresa
Usados en muchos campos de la computacin. Desde
mtodos de clasificacin y bsqueda y compilacin rboles
sintcticos hasta inteligencia artificial rboles de decisiones
Contiene nodos y enlaces. Los enlaces pueden ser nulos o
referencias a otros nodos
Cada rbol tiene un nodo raz
Cada nodo tiene un padre y 0 ms hijos. El nodo raz no posee
un nodo padre
Terminologa y representacin de un rbol general
Nodos: Elementos dentro del rbol
Nodo raz: Es el primer nodo del rbol. Los dems nodos
descienden del nodo raz. El nodo raz no tiene padre
Nodo terminal u hoja: Nodos que no contienen subrboles
Nodo padre: Nodo inmediatamente anterior
Nodo hijo: Nodo sucesor inmediato
Nodo interno: Nodos que al menos tienen un hijo no vaco
Nodos hermanos: Nodos con un mismo padre
Grado de un nodo: Cantidad de hijos
Terminologa y representacin de un rbol general
Terminologa y representacin de un rbol general
Altura de un rbol: Longitud del camino ms largo desde la
raz a cualquier hoja
Altura de un nodo: Longitud del camino que va desde ese
nodo hasta su hoja ms profunda
Profundidad de un nodo Nivel: Longitud del camino que va
desde la raz hasta ese nodo
Terminologa y representacin de un rbol general
Tipos de rboles
rboles binarios de bsqueda
rboles AVL
Montculos. Colas con prioridad. Heapsort
rboles B. Bases de datos
...
rboles binarios
Es un rbol en donde cada nodo tiene un mximo de dos hijos
Estos dos enlaces, uno izquierdo y otro derecho, apuntan o
referencian a un nodo izquierdo y un nodo derecho
respectivamente
rboles binarios
Un rbol binario puede presentar las siguientes caractersticas:

rbol balanceado: Es cuando la diferencia de altura de los dos


subrboles de cualquier nodo del rbol es 1, 0 1
rbol lleno: Es un rbol en donde todos los nodos que tienen
hijos tienen dos hijos
rbol completo: Es un rbol en donde todos los nodos que
tienen hijos tienen dos y las hojas estn en un mismo nivel
rboles binarios
Recorridos en rboles binarios
Inorden izquierdo, nodo, derecha
recorridoInOrden(Nodox):
sixdiferentedenuloentonces :
recorridoInOrden(x.izquierdo)
imprimirx.valor
recorridoInOrden(x.derecho)
Posorden izquierda, derecho, nodo

Preorden nodo, izquierdo, derecho


Recorridos en rboles binarios

Inorden izquierdo, nodo, derecha


BDAGECHFI
Posorden izquierda, derecho, nodo
DBGEHIFCA
Preorden nodo, izquierdo, derecho
ABDCEGFHI
rbol binario de bsqueda
Es un rbol binario en donde el valor de la clave de un nodo
dado es
mayor que todos los valores claves de su subrbol
izquierdo y
menor que todos los valores claves su subrbol derecho
rbol binario de bsqueda
En un rbol binario de bsqueda todas las operaciones toman
un tiempo proporcional a la altura del rbol en el peor caso.
rbol binario de bsqueda
Nmero de comparaciones para buscar o insertar es igual a 1
+ profundidad del nodo

Formas tpicas de un rbol binario de bsqueda


Insertar un nodo

publicvoidinsertar(intvalor){
raiz=insertar(raiz,valor);
}

privateNodoinsertar2(Nodonodo,intvalor){
if(nodo==null){
returnnewNodo(valor);
}

if(clave<nodo.getValor()){
nodo.izq=insertar(nodo.izq,valor);
}else{
nodo.der=insertar(nodo.der,valor);
}

returnnodo;
}
Eliminar un nodo

Eliminar la clave minima


Moverse hacia la izquierda hasta encontrar un nodo con un
enlace izquierdo nulo
Reemplazar ese nodo con el enlace derecho

publicvoideliminarMin(){
raiz=eliminarMin(raiz);
}

privateNodoeliminarMin(Nodox){
if(x.izq==null)
returnx.der;

x.izq=eliminarMin(x.izq);

returnx;
}
Eliminar un nodo

Mtodo Hibbard 1962


Borrar un nodo x reemplazndolo con su sucesor. Debido a
que x tiene un hijo derecho su sucesor es el nodo con la clave
ms pequea en su subrbol derecho.
El reemplazo preserva el orden en el rbol porque no existen
claves entre la clave del nodo x y la clave de su sucesor.
Eliminar un nodo
Mtodo Hibbard
Caso 0 El nodo a borrar no tiene hijos: Borrar el nodo
haciendo nulo el enlace del padre
Eliminar un nodo

Mtodo Hibbard
Caso 1 El nodo a borrar tiene un hijo: Reemplazar el enlace
del padre
El enlace derecho del nodo 5 cambia de apuntar al nodo 8
a apuntar al nodo 6
Eliminar un nodo
Mtodo Hibbard
Caso 2 El nodo a borrar tiene dos hijos: Borrar un nodo t que
tiene dos hijos consiste en lo siguiente:
Encontrar el sucesor x del nodo t El nodo sucesor no tiene
hijo izquierdo
Eliminar el mnimo en el subrbol derecho de t Evitando
que lo tome el recolector de basura
Colocar x en el lugar de t
Eliminar un nodo
Mtodo Hibbard. Caso 2