Está en la página 1de 13

FUNDACIN UNIVERSITARIA TECNOLGICO DE COMFENALCO

MATEMATICAS DISCRETAS

PRESENTADO POR: EDGAR JOS PREZ HENRQUEZ DANILO HERNANDEZ DIEGO TABORDA VICTOR HURTADO

PRESENTADO A: LUIS FERNANDO MURILLO

CARTAGENA DE INDIAS, 15 DE MAYO DE 2012

RBOL BINARIO DE BSQUEDA (ABB)

El rbol binario de bsqueda es una estructura sobre la cual se pueden realizar eficientemente las operaciones de bsqueda, insercin y eliminacin. En las listas, las operaciones de insercin y eliminacin se pueden llevar a cabo con facilidad, sin embargo la bsqueda es una operacin bastante costosa que incluso nos puede llevar a recorrer todos los elementos de ella para localizar uno en particular. Reglas a cumplir: Cada nodo del rbol puede tener 0, 1 2 hijos. Los descendientes izquierdos deben tener un valor menor al padre. Los descendientes derechos deben tener un valor mayor al padre.

Por qu son ABB?

Por qu no son ABB?

Ejemplo

Tambin es posible observar que si se efecta un recorrido inorden sobre un rbol de bsqueda se obtendr una clasificacin de los nodos en forma ascendente. El recorrido inorden del rbol de la figura anterior produce el siguiente resultado: 22-43-56-65-87-93-99-120-130-135-140

BSQUEDA EN UN RBOL BINARIO DE BSQUEDA

BSQUEDA (NODO, INFOR ) 1. Si INFOR < NODO^.INFO entonces 1.1 Si NODO^.IZQ = NIL entonces Escribir El ncdo no se encuentra en el rbol si no Regresar a BSQUEDA con N0DO^.IZQ e INFOR {Llamada recursiva} 1.2 { Fin del condicional del paso 1.1} si no 1.3 Si INFOR> NODO^.INFO entonces 1.3.1 Si NODO^.DER = NIL entonces Escribir El nodo no se encuentra en el rbol si no Regresar a BUSQUEDA con NODO^.DER e INFOR { Llamada recursiva) 1.3.2 (Fin del condicional del paso 1.3.1 si no Escribir El nodo se encuentra en el rbol 1.4 { Fin del condicional del paso 1.3} 2. { Fin del condicional del paso 1}

BUSQUEDA1 (NODO, INFOR) 1. Si NODO NIL entonces 1.1 Si INFOR < NODO^.INFO entonces Regresa a BSQUEDA1 con NODO^.IZQ e INFOR recursiva} si no 1.1.1 Si INFOR > NODO^.INFO entonces Regresa a BSQUEDA1 con NODO^.DER e INFOR {Llamada recursiva} si no Escribir El nodo se encuentra en el rbol 1.1.2 {Fin del condicional del paso 1.1.1} 1.2 {Fin del condicional del paso 1.1} si no Escribir El nodo no se encuentra en el rbol 2. {Fin del condicional del paso 1} {Llamada

INSERCIN EN UN RBOL BINARIO DE BSQUEDA

La insercin es una operacin que se puede realizar eficientemente en un rbol binario de bsqueda. La estructura crece conforme se inserten elementos al rbol. Los pasos que deben realizarse para insertar un elemento a un rbol binario de bsqueda son los siguientes: 1. Debe compararse la clave a insertar con la raz del rbol. Si es mayor, debe avanzarse hacia el subrbol derecho. Si es menor, debe avanzarse hacia el subrbol izquierdo. 2. Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes condiciones: 2.1 LI subrbol derecho es igual a vaco, o el subrbol izquierdo es igual a vaci; en cuyo caso se proceder a insertar el elemento en el lugar que le corresponde. 2.2 La clave que quiere insertarse es igual a la raz del rbol; en cuyo caso no se realiza la insercin. Ejemplo: Supngase que quieren insertarse las siguientes claves en un rbol binario de bsqueda que se encuentre vaco: claves: 120-87 - 43-65-140-99- 130-22-56

Los resultados parciales que ilustran cmo funciona el procedimiento se presentan en las figuras que siguen:

INSERCIN EN UN RBOL BINARIO DE BSQUEDA

INSERCIN (NODO, INFOR) 1. Si INFOR < NODO^.INFO entonces 1.1 Si NODO^.IZQ = NIL entonces CREA (OTRO) {Crear un nuevo nodo} Hacer OTRO^.IZQNIL, OTRO^.DERNIL, OTRO^.INFOINFOR y NODO^.IZQOTRO si no Regresar a INSERCIN con NODO^.IZQ e INFOR {Llamada recursiva} 1.2 {Fin del condicional del paso 1.1} si no 1.3 Si INFOR > NODO^.INFO entonces 1.3.1 Si NODO^.DER =NIL entonces CREA (OTRO) {Crear un nuevo nodo} Hacer OTRO^.IZQNIL, OTRO^.DERNIL, OTRO^.INFOINFOR y NODO^.DEROTRO si no Regresar a INSERCIN con NODO^.DER e INFOR {Llamada recusiva} 1.3.2 {Fin del condicional del paso 1.3.1} si no Escribir El nodo ya se encuentran en el rbol

1.4 {Fin del condicional del paso 1.3} 2. {Fin del condicional del paso 1}

INSERCIN1 (NODO INFOR) 1. Si NODO NIL entonces 1.1 Si INFOR < NODO^.INFO entonces Regresar a INSERCIN1 con NODO^.IZQ e INFOR {Llamada recursiva} si no 1.1.1 Si INFOR > NODO^.INFO entonces Regresar a INSERCIN1 con NODO^.DER e INFOR {Llamada recursiva} si no Escribir El nodo ya se encuentra en el rbol 1.1.2 {Fin del condicional del paso 1,1.1 } 1.2 { Fin del condicional del paso 1.1} si no CREA (OTRO) {Crear un nuevo nodo} Hacer OTRO^.IZQNIL, OTRO^.DERNIL, OTRO^.INFOINFOR y NODOOTRO 2. { Fin del condicional del paso 1}

BORRADO EN UN RBOL BINARIO DE BSQUEDA

La operacin (le borrado es un poco ms complicada que la de insercin. sta consiste en eliminar un nudo dci rbol sin violar los principios que definen justamente un rbol binario de bsqueda. Se debe distinguir los siguientes casos: 1. Si el elemento a borrar es terminal u hoja, simplemente se suprime. 2. Si el elemento a borrar tiene un solo descendiente, entonces tiene que sustituirse por ese descendiente. 3. Si el elemento a borrar tiene los dos descendientes, entonces se tiene que sustituir por el nodo que se encuentra ms a la izquierda en el subrbol derecho o por el nodo que se encuentra ms a la derecha en el subrbol izquierdo. Adems, debemos recordar que antes de eliminar un nodo, debe localizrsele en el rbol. Para esto, se utilizar el algoritmo de bsqueda.

Ejemplo:

Supngase que se desea eliminar las siguientes claves del rbol binario de bsqueda de la figura anterior:

claves: 22 - 99 - 87 - 120 - 140 - 135 56 Los resultados parciales que ilustran cmo funciona el procedimiento se presentan en las figuras que siguen:

Eliminacin en un rbol Binario de Bsqueda ELIMINACIN (NODO, INFOR) 1. Si NODO NIL entonces 1.1 Si INFOR < NODO^.INFO entonces Regresar a ELIMINACIN con NODO^.IZQ e INFOR {Llamada recursiva} si no 1.1.1 Si INFOR > NODO^.INFO entonces

Regresar a ELIMINACION con NODO^.DER e INFOR {Llamada recursiva } si no Hacer OTRONODO 1.1.1.A Si OTRO^.DER = NIL entonces Hacer NODOOTRO^.IZQ si no 1.1.1.B S OTRO^.IZQ = NIL entonces Hacer NODOOTRO^.DER si no Hacer AUXOTRO^.IZQ y AUX1AUX 1.1.1.C Repetir mientras AUX^.DER NIL Hacer AUX1AUX y AUXAUX^.DER 1.1.2.C {Fin del ciclo del paso 1.1.1.C} Hacer AUX1^.DERAUX^.IZQ OTRO^.INFO AUX^.INFO, OTROAUX y

1.1.2.B {Fin del condicional del paso 1.1.1.B} 1.1.2.A {Fin del condicional del paso 1.1.1.A} 1.1.2 {Fin del condicional del paso 1.1.1} 1.2 {Fin del condicional del paso 1.1} QUITA (OTRO) si no Escribir El nodo no se encuentra en el rbol 2. {Fin del condicional del paso 1} {Libera la memoria del nodo)

También podría gustarte