Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad...

of 36 /36
Principios de Computadoras II Árboles Binarios Departamento de Ingeniería Electrónica y Computadoras Universidad Nacional del Sur Ricardo Coppo [email protected]

Embed Size (px)

Transcript of Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad...

  • Principios de Computadoras II

    Árboles Binarios

    Departamento de Ingeniería Electrónica y ComputadorasUniversidad Nacional del Sur

    Ricardo [email protected]

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    2Universidad Nacional del Sur

    Definición conceptual de árbol binario� Un árbol binario es una estructura de información

    compuesta por colección o conjunto de nodos y arcos que forman una estructura jerárquica

    � Posee una raíz de la cual dependen a lo sumo 2 subárboles no vacíos

    � Cada subárbol posee una arista única que lo une con la raíz.

    � Los nodos que no poseen subárboles dependientes se denominan “hojas” del árbol.

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    3Universidad Nacional del Sur

    Ejemplo gráficoRaíz

    Subárbolderecho

    Subárbolizquierdo

    La raíz puede estar vacía

    Existe unarelación de“paternidad”

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    4Universidad Nacional del Sur

    Definición recursiva� Formalmente un árbol binario se puede definir

    de manera recursiva como sigue:

    � Una estructura vacía es un árbol (árbol vacío)

    � Sean A1 y A2 árboles disjuntos con raíces r1 y r2 respectivamente. Entonces, la estructura formada con un nodo r, que posee como hijos a A1 y A2 también es un árbol

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    5Universidad Nacional del Sur

    Ejemplo

    A1 A2

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    6Universidad Nacional del Sur

    Ejemplo

    A1 A2

    A11 A12 A21 A22

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    7Universidad Nacional del Sur

    Ejemplo

    A1 A2

    A11 A12 A21 A22

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    8Universidad Nacional del Sur

    Definiciones� Un “camino” entre un nodo n1 y nk se define como

    una secuencia de nodos n1, n2, …, nk tal que ni es el padre de ni+1 para 1

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    9Universidad Nacional del Sur

    Definiciones� Si hay un camino del nodo u al nodo v, entonces v

    es “descendiente” de u.

    � Si además u ≠ v entonces v es “descendiente propio” de u.

    � De forma similar se puede definir “ascendiente” y “ascendiente propio”

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    10Universidad Nacional del Sur

    Definiciones� Un nodo que no tiene hijos es una “hoja” del árbol

    � Dos nodos que tienen al mismo padre son “hermanos”

    � Se pueden definir otras relaciones de parentesco como “tíos”, “abuelos”, etc.

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    11Universidad Nacional del Sur

    Definiciones� Para cualquier nodo ni, la “profundidad” de ni es la

    longitud del camino desde la raíz hasta ni

    � La “altura” de ni está dado por el camino más largo del nodo ni hasta una hoja (las hojas son de altura 0)

    � La “altura” de un árbol es la altura de la raíz

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    12Universidad Nacional del Sur

    Propiedades especiales� La cantidad máxima de hojas que puede tener un

    árbol binario depende de la altura del mismo

    � Altura 0 (árbol vacío) Hojasmax = 0� Altura 1 (raíz solo) Hojasmax = 2

    1-1 = 1� Altura 2 Hojasmax = 2

    2-1 = 2� Altura 3 Hojasmax = 2

    3-1 = 4

    � Altura h Hojasmax = 2h-1

    En un árbol general no se puede calcular este valor

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    13Universidad Nacional del Sur

    Árbol Binario (Implementación)Descripción del nodo

    del árbol

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    14Universidad Nacional del Sur

    Árbol Binario (Implementación)Descripción del nodo

    del árbol

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    15Universidad Nacional del Sur

    Árbol Binario (Implementación)La clase principal

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    16Universidad Nacional del Sur

    Árbol Binario (Implementación)La clase principal

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    17Universidad Nacional del Sur

    Árbol Binario (Implementación)La clase principal

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    18Universidad Nacional del Sur

    Árbol Binario (prueba)

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    19Universidad Nacional del Sur

    Árbol Binario de Búsqueda(Binary Search Tree – BST)

    � Un árbol binario de búsqueda es un árbol binario que además presenta las siguientes propiedades:

    � Los valores o nodos contienen elementos que pueden ser ordenados de alguna manera (enteros, cadenas de caracteres, u otro orden definido por el programador).

    � Para cada nodo del árbol que almacena un elemento v, todos los elementos xv se encuentran el en subárbol derecho.

    � En principio se evita el almacenamiento de valores duplicados eneste tipo de árbol.

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    20Universidad Nacional del Sur

    Arboles binarios de búsquedaK

    A P

    N R

    45

    35 99

    22 37

    En este tipo de árbol se evita almacenar valores re petidos.

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    21Universidad Nacional del Sur

    Árboles Binarios de Búsqueda� Si el árbol se encuentra balanceado, los algoritmos de

    búsqueda son muy eficientes O(log n).� En el peor caso se comporta como una lista enlazada

    � Los algoritmos de determinación del mínimo y máximo elemento almacenado también son muy eficientes.

    � Recorrer siempre a la derecha o a la izquierda hasta encontrar una hoja

    � Debido a la velocidad de la búsqueda se puede definir un método “contiene(x)” o “pertenece(x)” que dado un valor x, determina si se encuentra o no en el árbol.

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    22Universidad Nacional del Sur

    Árbol Binario de Búsqueda

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    23Universidad Nacional del Sur

    Árbol Binario de BúsquedaImplementación

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    24Universidad Nacional del Sur

    Árbol Binario de BúsquedaImplementación

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    25Universidad Nacional del Sur

    Implementación

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    26Universidad Nacional del Sur

    Árbol Binario de Búsqueda

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    27Universidad Nacional del Sur

    Implementación

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    28Universidad Nacional del Sur

    Árbol Binario de Busqueda: Eliminación

    Eliminar una hoja del árbol

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    29Universidad Nacional del Sur

    Árbol Binario de Búsqueda: Eliminación

    Eliminar un nodo con un solo hijo

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    30Universidad Nacional del Sur

    Árbol Binario de Búsqueda: Eliminación

    Eliminar un nodo con un solo hijo

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    31Universidad Nacional del Sur

    Árbol Binario de Búsqueda: Eliminación

    Eliminar un nodo con un solo hijo

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    32Universidad Nacional del Sur

    Implementación

    Sigue…

    REVIS

    AR!!

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    33Universidad Nacional del Sur

    Implementación

    Sigue…

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    34Universidad Nacional del Sur

    Árbol de Búsqueda BinariaEliminación

  • Principios de Computadoras IIArboles BinariosRicardo Coppo

    35Universidad Nacional del Sur

    Programa principal

  • Principios de Computadoras II

    Árboles Binarios

    Departamento de Ingeniería Electrónica y ComputadorasUniversidad Nacional del Sur

    Ing. Ricardo [email protected]