Documente Academic
Documente Profesional
Documente Cultură
En caso de tener subrbol izquierdo, la raz R debe ser mayor que el valor mximo almacenado en el subrbol izquierdo, y que el subrbol izquierdo sea un rbol binario de bsqueda.
En caso de tener subrbol derecho, la raz R debe ser menor que el valor mnimo almacenado en el subrbol derecho, y que el subrbol derecho sea un rbol binario de bsqueda.
50 40 26 8 34 42 90
45 68
85 88 95 102 100
Raz R A B C D E
Bsqueda
Consiste acceder a la raz del rbol, si el elemento a localizar coincide con
Bsqueda
Si dato < NODO.info Si NODO.IZQ == null Escribir El nodo no se encuentra en el rbol Si no Bsqueda (NODO.izq,dato) Si no Si Dato > NODO.INFO entonces Si NODO.DER = null Si no Bsqueda (NODO.der,dato) Si no Escribir El NODO se encuentra en el rbol si nodo != null si Dato < NODO .INFO Bsqueda (Nodo.izq,Dato) si no si Dato > No dato.der Bsqueda (No dato.der,dato) si no escribir El Dato se encuentra Si no Escribir El dato no se encuentra en el rbol
Insercin
Insercin
Algoritmo Si NODO Null { Si (INFOR < NODO.INFO) Regresar a INSERCION1 con NODO.IZQ e INFOR sino si ( INFOR > NODO.INFO) Regresar a INSERCION1 con NODO.DER e INFOR sino Escribir El nodo ya se encuentra en el rbol } Si no CREA (OTRO) {Crear un nuevo nodo} Hacer OTRO.IZQ = null, OTRO.DER = null, OTRO.INFO = INFOR y NODO = OTRO }
Insercin
Algoritmo Si NODO Null { Si (INFOR < NODO.INFO) Regresar a INSERCION1 con NODO.IZQ e INFOR sino si ( INFOR > NODO.INFO) Regresar a INSERCION1 con NODO.DER e INFOR sino Escribir El nodo ya se encuentra en el rbol } Si no CREA (OTRO) { Crear un nuevo nodo } Hacer OTRO.IZQ = null, OTRO.DER = null, OTRO.INFO = INFOR y NODO = OTRO }
Insercin
Insercin
120
87
140
43
65
130
22
56
I 99
Borrado
La operacin de borrado no es tan sencilla como las de bsqueda e insercin. Existen varios casos a tener en consideracin:
Borrado
6 1 7
6 8 7 1 8
8
9
Borrado
Borrado
Si no { aux = otro.izq aux1 = Aux while (aux.der != null ) aux1 = aux aux = aux.der } otro.info = aux.info otro = aux aux1.der = aux.izq quita (otro) (null) si no Escribir (el nodo no se encuentra en el rbol) }
Borrado
120
87
140
43
65
130
22
56
I 99
Borrado
si NODO !=null entonces si Dato < NODO.info Eliminacin (NODO.izq, Dato) si no si dato > NODO.INFO entonces Eliminacin (NODO.der, Dato si no
otro = NODO
si otro.der == null entonces NODO = otro.izq si no
si otro.izq == null
entonces NODO = otro.der
Recorridos
Se puede hacer un recorrido de un rbol en profundidad o en anchura. Los recorridos en anchura son por niveles, se realiza horizontalmente desde la
raz a todos los hijos antes de pasar a la descendencia de alguno de los hijos.
El recorrido en profundidad lleva al camino desde la raz hacia el descendiente ms lejano del primer hijo y luego contina con el siguiente hijo. Como recorridos en profundidad tenemos inorden, preorden, postorden. Una propiedad de los ABB es que al hacer un recorrido en profundidad inorden obtenemos los elementos ordenados de forma ascendente.
PREORDEN (NODO) { NODO es un dato de tipo apuntador } {INFO, IZQ, DER son campos del registro } Si nodo != null entonces { Visitar NODO {escribir NODO.INFO } llamar a preorden con NODO.IZQ { llamada recursiva a preorden con la rama izquierda del nodo en cuestin } llamar a preorden con NODO.DER { llamada recursiva a preorden }
}