Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

download Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

of 87

Transcript of Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    1/87

    FACULTAD DE INGENIERA

    ESCUELA DE INGENIERA ENSISTEMAS Y COMPUTACIN

    ESTRUCTURA DE DATOS

    Pamela Vsquez Costales

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    2/87

    UNIDAD III

    CAPTULO 9

    ESTRUCTURASJERRQUICAS Y

    RBOLES BINARIOS DEBSQUEDA

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    3/87

    ESTRUCTURAS JERRQUICAS

    Y RBOLES BINARIOS DEBSQUEDA

    Objetivos

    O Definir las caractersticas de las

    estructuras de datos jerrquicas.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    4/87

    Objetivos

    O Describir la terminologa de lasestructuras de datos tipo rbol: nodoraz, nodo hijo, nodo padre,ancestros, descendientes, nodo hoja,sub-rbol, altura y niveles.

    O Describir el diseo lgico del TDA

    rbol binario de bsqueda (ABB),incluyendo las operaciones debsqueda, insercin y eliminacin deun elemento.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    5/87

    Objetivos

    O Implantar el TDA ABB,comprendiendo el movimiento del

    apuntador en la ruta de bsqueda.O Describir la forma en que se realizan

    los recorridos sobre un rbol binario.O Distinguir las ventajas de aplicar la

    recursividad en la implementacin derutinas relacionadas con rbolesbinarios.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    6/87

    Qu es una estructura jerrquica?

    La organizacin de los datos en unaestructura en forma jerrquica ode

    niveles, es una nueva opcin pararepresentar estructuras de datos,

    comnmente denominada rboles. Sucaracterstica principal es que

    mantienen una relacin de uno amuchos (1:n) entre sus elementos.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    7/87

    Estructura Jerrquica o rbol

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    8/87

    Terminologa bsica en las

    estructuras jerrquicas o rboles

    O Nodo raz: es el primer elemento deun rbol binario; un rbol binario slotiene un nodo raz.

    O Nodo padre: son los nodos quetienen al menos un hijo (derecho y/o

    izquierdo).O Hijo derecho: nodo que se encuentra

    al lado derecho de otro nodo.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    9/87

    O Hijo izquierdo: nodo que est al

    lado izquierdo de otro nodo.O Nodo hoja: nodos que no tienen

    hijos. (Un nodo de un rbol binariopuede tener ninguno, uno o dos

    hijos.)O Nodo hermano: nodos que tienen un

    mismo padre.

    OAncestros: nodo padre de un nodo oel padre de algn nodo ancestro. (Elnodo raz es un ancestro de todos losnodos del rbol.)

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    10/87

    O Nodo descendiente: el hijo de unnodo o el hijo de otro descendiente deese nodo. (Todos los nodos del rbolson descendientes del nodo raz.)

    O Subrbol izquierdo: todos losdescendientes por la izquierda de unnodo forman un subrbol izquierdo,cuya raz es el hijo izquierdo de ese

    nodo.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    11/87

    O Subrbol derecho: todos losdescendientes por la derecha de unnodo forman un subrbol derecho,cuya raz es el hijo derecho de ese

    nodo.O Nivel de un nodo: distancia desde la

    miz. La raz est en el nivel cero.Cantidad de nodos por los que se

    tiene que pasar para llegar a un nodo.(El nmero mximo de nodos en elnivel n es 2n.)

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    12/87

    O Subrbol derecho: todos losdescendientes por la derecha de unnodo forman un subrbol derecho,cuya raz es el hijo derecho de ese

    nodo.O Nivel de un nodo: distancia desde la

    miz. La raz est en el nivel cero.Cantidad de nodos por los que se

    tiene que pasar para llegar a un nodo.(El nmero mximo de nodos en elnivel n es 2n.)

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    13/87

    Ejemplo de los elementos de un rbolBinario

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    14/87

    Cmo se relaciona el problema dela bsqueda con los rboles?

    Si se recuerda, en el captulo anterior

    se concluy que la manera mseficiente de realizar una bsqueda en

    una estructura lineal es con elalgoritmo de la bsqueda binariaaplicado en una tabla de memoria

    esttica.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    15/87

    Sin embargo, esta estructurapresentaba la desventaja de no ser

    eficiente para la insercin y eliminacinde elementos. Por otro lado, una lista

    encadenada ordenada tena un mejorcomportamiento en las inserciones ylas bajas de elementos, pero no en el

    algoritmo de la bsqueda binaria.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    16/87

    Ante esta disyuntiva, contar con lasestructuras jerrquicas (rboles)

    representa una opcin para conjuntarlas caractersticas positivas de estas

    estructuras lineales La propuesta es elTDA rbol Binario de Bsqueda, que sedescribe a continuacin.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    17/87

    Qu es un rbol Binario deBsqueda (ABB)?

    Un ABB es una estructura de datos que

    guarda informacin no repetida paraadministrar eficientemente la bsqueda

    de los propios datos.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    18/87

    Pertenece al conjunto de estructurasjerrquicas, restringiendo la relacin

    de uno a dos como mximo ycumpliendo con un ordenamiento de tal

    forma que, para cada elemento delABB, los elementos menores estarn asu izquierda y los mayores a suderecha como indica la siguiente

    figura:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    19/87

    Ejemplo de rboles

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    20/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    21/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    22/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    23/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    24/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    25/87

    Cmo se realiza la bsqueda enun ABB?

    La idea bsica del algoritmo debsqueda consiste en comparar la

    informacin del nodo con la del valorbuscado; si no son iguales, elapuntador de bsqueda se mueve a la

    izquierda o a la derecha del valor

    buscado, segn sea menor o mayor,comenzando por la raz y hasta que se

    encuentre o no el valor.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    26/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    27/87

    O Verifique si la informacin del nodo sealado

    por el apuntador auxiliar es mayor, menor o

    igual al nodo buscado.

    O Si es mayor, mueva el apuntador auxiliar al

    nodo hijo derecho; si es menor, mueva elapuntador auxiliar al nodo hijo izquierdo. Si

    son iguales, ha encontrado el nodo y el

    apuntador auxiliar lo seala la siguiente

    figura:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    28/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    29/87

    Por qu es eficiente la bsqueda en

    un ABB?

    El ABB es una consecuencia directa delalgoritmo de bsqueda binaria sobreuna estructura lineal y, por lo tanto,tiene todos sus beneficios. Si un ABBtiene distribuidos sus elementos en

    forma balanceada, se obtendr elmayor beneficio, pues se haran lasmismas comparaciones que en unabsqueda binaria sobre un arreglo.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    30/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    31/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    32/87

    Insercin de un elemento en un ABB:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    33/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    34/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    35/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    36/87

    O Al salir del ciclo el apuntador auxiliar 2

    sealar vaco, pero el apuntador auxiliar 3estar en el nodo que ser el padre del

    nuevo.

    4. Verifique si el apuntador auxiliar 3 es vaco,

    en cuyo caso, el nuevo nodo ser el primeroen el rbol y el apuntador raz tendr que

    sealarlo.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    37/87

    Si el apuntador auxiliar 3 no es vaco,

    entonces estar sealando al padre delnuevo nodo. Se debe verificar si lainformacin del nuevo nodo es menor a

    la del marcado por el apuntador

    auxiliar 3, en cuyo caso deberencadenarse el nuevo nodo como un

    hijo izquierdo del sealado por elapuntador auxiliar 3. Si la informacinno es menor, entonces ser mayor ytendr que encadenarse como hijo

    derecho.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    38/87

    Cmo se realiza la eliminacin de

    un elemento en un ABB?

    La accin de borrar un nodo puedeenfrentarse con alguno de los

    siguientes casos:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    39/87

    1. El nodo que se va a borrar es una

    hoja. Puesto que no tiene hijos, sunodo padre apuntar ahora a vaco.Eliminacin de un nodo hoja: seelimina el 8.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    40/87

    2. El nodo por borrar tiene slo un hijo. Eneste caso, el padre del que se va a borrarpuede apuntar directamente al nodo hijodel que se eliminar. Eliminacin de unnodo con un hijo: se elimina el 21.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    41/87

    3. El nodo por borrar tiene dos hijos.

    Puesto que el padre del que se va aeliminar no puede heredar dosapuntadores, se busca un valor sus-tituto del valor por borrar y el nodo no

    se borra fsicamente.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    42/87

    Se puede escoger como sustituto al

    predecesor del que se eliminar (elvalor mayor de todos los valoresmenores; o bien, de los nodos delsubrbol izquierdo el de ms a la

    derecha), y se elimina fsicamente elnodo donde se encuentre como indicala siguiente figura:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    43/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    44/87

    Se puede asegurar que la baja fsica

    del nodo sustituto cae en alguno de losdos primeros casos. De igual manera,se puede considerar al sucesor comovalor sustituto.

    El algoritmo de esta operacin estcompuesto de dos partes. La primerase encarga de localizar el nodo porborrar yla segunda borra el nodoencontrado.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    45/87

    Primera parte (localizar el nodo por

    borrar)1. Se coloca un apuntador auxiliar 1 enla raz del rbol y un apuntador auxiliar2 en vaco. El apuntador auxiliar 2

    siempre sealar al nodo padre del queseala el apuntador auxiliar 1.2. Mientras no se haya encontrado el

    nodo por borrar:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    46/87

    O Se verifica si la informacin del nodo

    sealado por el apuntador auxiliar 1es la que se desea borrar, en caso deque no sea: a) se coloca el apuntador

    auxiliar 2 en el nodo que seala el

    apuntador auxiliar 1 y b) se mueve elapuntador auxiliar 1 al nodo hijo iz-quierdo si la informacin que se va aborrar es menor a la informacin del

    nodo que seala el apuntador auxiliar1; en caso contrario, debe moverse a

    la derecha.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    47/87

    O Al salir del ciclo, el apuntador auxiliar

    1 estar sealando al nodo por borrary el apuntador auxiliar 2 al nodopadre.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    48/87

    Segunda parte (eliminar el nodo

    correspondiente)1. Se coloca un apuntador temporal enel nodo que debe borrar.2. Se verifica si el nodo por borrar eshoja o tiene slo un hijo, en cuyo casose desencadenar del rbol para darlode baja.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    49/87

    Nodo hoja: Si el nodo apuntado por el

    auxiliar 1 no tiene hijo izquierdo niderecho, debe modificarse el apuntadorque lo conecta con su padre (a travsdel auxiliar 2) de tal forma que apunte

    hacia vaco. Nodo con un hijo derecho:si el nodo tiene hijo izquierdo, pero sderecho, se modifica el apuntador quelo conecta con su padre (a travs del

    auxiliar 2) de tal forma que seale alhijo derecho.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    50/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    51/87

    O Se coloca el apuntador temporal en el

    hijo izquierdo del nodo sealado porel apuntador auxiliar1.O Se mueve el apuntador temporal

    hacia la derecha lo ms posible, es

    decir, justo en el nodo antes de que elmovimiento a la derecha lo saque delrbol. El nodo al que se llegue ser elnodo sustituto y se puede asegurarque es nodo hoja o que tiene slo unhijo izquierdo.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    52/87

    O Se copia la informacin del nodo

    sustituto en el marcado por el apuntadorauxiliar1.O Se desencadena el nodo sealado por el

    apuntador temporal de la misma forma

    en que se hace para un nodo hoja o unocon hijo izquierdo. En este caso, para elmovimiento de apuntadores, se tendrque evaluar si el nodo marcado por el

    apuntador temporal es la raz delsubrbol izquierdo del nodo sealado porel apuntador auxiliar 1 o es de un nivelinferior.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    53/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    54/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    55/87

    La mejor representacin para un ABB

    ser utilizando memoria dinmicaobteniendo as sus beneficios, pues elalgoritmo de bsqueda binaria pierdesu eficiencia si se trata de aplicar en

    una lista encadenada ordenada.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    56/87

    Qu desventajas tiene un ABB?

    La principal desventaja de un ABB es laforma en que se realizan las

    inserciones y eliminaciones deelementos. El orden de insercin y eli-minacin determina la forma en que se

    balancea el rbol y, por lo tanto,

    repercute en las bsquedasposteriores.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    57/87

    En el peor de los casos, un ABB puede

    degenerar en una lista sobre la que seaplicar una bsqueda secuencial. Sepuede hacer la prueba insertando en elrbol vaco una secuencia ordenada de

    datos y comprobando que el rbol quese forma es uno en que slo seencadenan los nodos por medio de unslo apuntador y se degenera en una

    lista.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    58/87

    Obviamente en este caso el algoritmo

    de bsqueda en el ABB se comportarcomo una bsqueda secuencial Laforma de atacar este problema se

    analizar en captulos posteriores al

    conocer otras estructuras.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    59/87

    Qu aplicaciones tiene un ABB?

    Un ABB ser til en cualquier aplicacinen la que se requiera administrar un

    grupo ordenado de datos en memoria

    principal con el objetivo bsico debuscar de manera eficiente cualquierdato. Se recomienda que la aplicacintenga al grupo de datos bien definido

    desde un principio y que no requiera demuchas altas y bajas para mantener el

    rbol lo ms balanceado posible.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    60/87

    Qu Cmo se puede representarfsicamente un ABB?

    La forma de representar un ABB estobligada a utilizar ligas, ya sea en

    memoria dinmica (preferentemente) o

    esttica.La base de esta representacin estaren un nodo que contenga la

    informacin y los apuntadores a los

    subrboles izquierdo y derecho.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    61/87

    El ABB estar controlado mediante unapuntador principal al nodo raz del

    rbol como indica la figura:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    62/87

    Representacin de un ABB en memoria,con nodos que contienen apuntadores a

    sus hijos izquierdos y derechos. Elcontrol del rbol est en el apuntador

    principal raz.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    63/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    64/87

    Declaracin de tipos para un ABBen lenguaje C++:

    class NodoArbol

    {public:

    tipoinfo info;

    NodoArbol *izq, *der;

    NodoArbol() {izq=der=NULL;}

    NodoArbol(tipoinfo dato)

    {info=dato; izq=der=NULL;

    };

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    65/87

    Declaracin de tipos para un ABBen lenguaje C++:

    class ABB

    {private:

    NodoArbol *raiz;

    public:

    ABB() {raiz=NULL;}

    ~ABB() //se requiere un destructor

    //otros mtodos...

    };

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    66/87

    De qu manera se implementanlas operaciones y/o aplicaciones

    sobre rboles binarios?

    La implementacin de las operaciones

    sobre rboles binarios requiereobservar previamente qu tipo desolucin conviene.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    67/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    68/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    69/87

    Algoritmo iterativo de la bsqueda

    NodoABB *p=raiz;

    while (p!=NULL)

    if(p->info == valor)return(p);

    elsep=(p->info > valor? p->izq: p->der);

    }return(NULL);

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    70/87

    Algoritmo iterativo de la insercinNodoABB *NuevoNodo = new Nodo Arbol (valor);

    NodoABB *actual = raiz, *anterior = NULL;

    While (actual !=NULL){ anterior=actual;actual=(actual->info>valor? actual->izq:

    actual->der);}if(anterior==NULL)raiz=NuevoNodo;

    elseif(anterior->info > valor)

    anterior->izq=NuevoNodo;else

    anterior->der=NuevoNodo;

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    71/87

    Rutina recursiva para desplegar lainformacin de un rbol binariovoid despliega ( NodoABB* raiz)

    {

    if(raiz!=NULL)

    {cout Raiz->info;

    despliega( Raiz->izq );

    despliega Raiz->der);}

    }

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    72/87

    cout Raiz->info;

    despliega( Raiz->izq );

    despliega Raiz->der);

    El orden de estas instruccionesdetermina el tipo de recorrido en el

    rbol

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    73/87

    En qu consisten los recorridos enun rbol binario?

    La accin de recorrer una estructura dedatos es muy importante, pues permitehacer algo en todos los elementos de la

    estructura (por ejemplo, desplegarlosen pantalla). Esto es simple en unaestructura lineal, pues slo se recorre

    desde el principio hasta el final. Pero en

    una estructura jerrquica como losrboles binarios, hay diferentes formasde realizar estos recorridos.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    74/87

    Los algoritmos de los recorridos de unrbol binario se pueden plantear

    recesivamente de la siguiente forma(se entiende que "visitar" es la accin

    por aplicar al nodo durante el

    recorrido). Asimismo, se observa queun recorrido se aplica sobre cualquierrbol binario, sin importar si es o no de

    bsqueda como indica la figura:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    75/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    76/87

    Preorden: til para reconstruir un ABB1. Visite el nodo raz del rbol.2. Recorra en preorden el subrbol

    izquierdo del nodo raz.3. Recorra en preorden el subrbol

    derecho del nodo raz.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    77/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    78/87

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    79/87

    Adems de estos recorridostradicionales, se tienen los recorridos

    conversos, en los que el orden derecorrido se invierte a derecha-iz-

    quierda, en vez de izquierda-derecha.

    Finalmente, existe un recorrido llamadonivel por nivel, en el que los nodos delrbol se visitan por niveles a partir del

    0, y de izquierda a derecha. Este

    algoritmo puede plantearseiterativamente, utilizando una fila de lasiguiente manera:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    80/87

    1. Inserte el apuntador al nodo raz auna fila.

    2. Mientras la fila no se vace:

    O Saque el apuntador de la fila y

    procese el nodo sealado.O Inserte en la fila los apuntadores de

    los hijos del nodo procesado (si stos

    existen).

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    81/87

    Ejemplo:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    82/87

    EJERCICIOS CAPTULO VIII

    1. Dado el siguiente rbol binario de bsquedacodificado (cada smbolo de un nodo

    corresponde a un valor numrico), respondacada uno de los siguientes incisos:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    83/87

    a) Qu smbolo representa el valor numrico

    ms grande en el rbol?

    b) Qu smbolo representa el valor numrico

    ms pequeo en el rbol?

    c) Qu smbolo representa el valor medio enel rbol?

    d) Cules son los ancestros del nodo que

    contiene el smbolo "?"?

    e) Cuntas comparaciones se requerirn para

    encontrar el smbolo & en el rbol?

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    84/87

    f) Cuntos nodos como mximo podran

    existir en el rbol si su altura fuera igual a 4?

    g) g) Cul es el smbolo cuyo valor numrico

    asociado es inmediata

    mente mayor al valor numrico del smbolo =

    ?

    h) h) Si el embolo % representa la suma de los

    valores asociados a los smbolos $ y /,

    muestre con un dibujo cmo quedara elrbol al insertar el smbolo %.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    85/87

    2. Para cada uno de los siguientes incisos,

    dados los recorridos, construya el rbol binariocorrespondiente:

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    86/87

    3. Qu tipo de recorrido sobre un rbol

    binario realiza la siguiente funcin?Nota: suponga que la clase pila estparametrizada y que se implementa

    segn las necesidades de estaaplicacin.

  • 7/23/2019 Cap IX, ESTRUCTURAS JERARQUICAS Y ARBOLES BINARIOS DE BUSQUEDA.pdf

    87/87