ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde...

56
Estructuras de Datos Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu.mx/Takeyas 1 ÁRBOLES BINARIOS DE BÚSQUEDA 2 1 2

Transcript of ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde...

Page 1: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 1

ÁRBOLES BINARIOS DE BÚSQUEDA

2

1

2

Page 2: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 2

3

Preguntas detonadoras

�¿Qué es un árbol?

�¿Cómo se clasifican los árboles?

�¿Qué características distinguen a un árbol binario?

�¿ … y a un árbol binario de búsqueda?

�¿Cómo se representa gráficamente un árbol binario de búsqueda?

�¿Qué operaciones se pueden realizar en un árbol binario de búsqueda?

�¿Cómo se diseña un modelo orientado a objetos con un árbol binario de búsqueda?

�¿Cómo se puede dibujar una estructura de datos?

Clasificaciones de ED

4

EDCLASIFICADAS

PORTIPO DE

RECORRIDO

Lineales

Nolineales

• Arreglos• Pilas• Colas• Listas enlazadas simples• Listas enlazadas dobles

• Árboles• Grafos

3

4

Page 3: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 3

Árbol

Es una estructura de datos jerárquica, dinámicay no lineal que se compone de un conjunto denodos y arcos, además tiene un apuntador inicialllamado “raíz”

5

Raíz

6

Estructura jerárquica

5

6

Page 4: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 4

Conceptos

�Raíz: Nodo inicial del recorrido del árbol

�Padre: Nodo antecesor de otro

�Hijo: Nodo sucesor o descendiente

�Hermano: Nodos sucesores del mismopadre

�Hoja: Nodo sin hijos

�Interior: Conjunto de nodos que no sonraíz ni hojas

7

8

Tipos de nodos

7

8

Page 5: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 5

Conceptos (cont.)

�Subárbol: Es una sección jerárquica de un árbol

�Nivel de un nodo: Cantidad de arcosrecorridos+1 para llegar a un nodo. La raíz tienenivel 1.

�Altura del árbol: Representa el valor másgrande de los niveles de los nodos

�Grado de un nodo: Cantidad de hijos de unnodo

�Grado de un árbol: Representa el valor másgrande de los grados de un nodo 9

10

Subárbol

9

10

Page 6: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 6

11

Altura y niveles de un árbol

12

Grado de un árbol

11

12

Page 7: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 7

Conceptos

13

Raíz

Hojas

Nivel 2

Grado 2

Nivel 1

Grado 3

Nivel 4

Grado 0

Altura del árbol: 5

Grado del árbol: 3

Tipos de árboles� Generales.- Árboles de grado > 2� Binarios.- Árboles de grado 2.� Binarios de búsqueda.- Árboles binarios donde los hijos

izquierdos son menores y los derechos con mayores que el padre.

� AVL.- Árboles binarios de búsqueda autobalanceables� Roji-negros.- Árbol binario de búsqueda equilibrado� AA.- Es una variante del árbol roji-negro que agrega

nodos rojos solamente por la derecha� B.- Árboles balanceados de búsqueda de grado > 2� B+.- Variante del árbol B que indexa datos� B*.- Variante del árbol B que optimiza el acomodo de los

nodos14

13

14

Page 8: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 8

Árbol binario de búsqueda

Es un árbol binario (grado 2) en el que el hijoizquierdo es menor y el hijo derecho es mayorque su padre. Esta condición se cumple paratodos los nodos.

15

Ordenamiento de datos en un ABB

El ABB mantiene los datos ordenados, aunque no de laforma tradicional sino mediante una estructura binaria

16

1 2 3 5 6 7 8 9 10

15

16

Page 9: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 9

Ejemplo de árboles binarios en la vida cotidiana

17

18

Hijos en árboles binarios

Hijoizquierdo

Hijoderecho

17

18

Page 10: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 10

Lectura

Para reforzar este tema se recomienda la lectura de:

Capítulo 8.- Árboles binarios

19

Arquitectura de un nodoCada nodo tiene 3 secciones:

1. Dato (puede ser simple o compuesto)2. Apuntador o referencia que enlaza al hijo

izquierdo3. Apuntador que enlaza al hijo derecho

20

DatoApuntador

al hijoderecho

Apuntadoral hijo

izquierdo

19

20

Page 11: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 11

Representación de un ABB

21

Raíz

nulo

nulo nulo

nulo

nulo nulo

Diseño de un ABB orientado a objetos

�Se identifican 3 tipos de objetos en elABB:

1) Los objetos con los datos que se deseanalmacenar y ordenar

2) Los objetos de los nodos

3) El objeto del ABB

22

21

22

Page 12: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 12

Esquema de los objetos

23

El ABB (objeto verde) dentro tiene una secuencialógica de nodos (objetos azules) enlazados porapuntadores y cada uno de ellos a su vez tiene dentroun objeto con los datos que se desean almacenar yordenar (objetos rojos)

Raíz

nulo

nulo nulo

nulo

nulo nulo

Diseño genérico y didáctico del ABB

24

� Esta clase puede ser…

� Empleado

� Escuela

� Médico

� etc. (según lo que se desee almacenar en el ABB)

23

24

Page 13: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 13

Diseño orientado a objetos de un ABB

�Se diseña un ABB con objetos creados pormedio de varios tipos de clases:

�Clase “roja”.- Sirve para crear objetos conlos datos que se desean almacenar en elABB

�Clase “azul”.- Clase para crear los nodos�Clase “verde”.- Clase para crear el objeto

del ABB

25

Notación de colores

�Los estudiantes deben poner especialatención a los colores usados en las figurasexplicativas del resto del curso.

�Los objetos estarán identificados por colores

�Objetos “rojos”.- Contienen los datos que sedesean almacenar y ordenar en el ABB

�Objetos “azules”.- Representan los nodos delABB

�Objeto “verde”.- Es el ABB26

25

26

Page 14: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 14

Diseño de clases

27

� Clase “verde”.- Define la composición entre el ABB y la raíz.También tiene los métodos y propiedades para administrar elABB.

� Clase “azul”.- Define los componentes de los nodos.

� Clase “roja”.- Definiciones de los datos que se deseanalmacenar y ordenar en el ABB

Raíz

nulo

nulo nulo

nulo

nulo nulo

Declaración del nodo en al ABBCada nodo es un obtiene 3 atributos (con sus propiedades):

1. objetoConDatos.- El nodo recibirá un objeto con los datosque se desean almacenar en el ABB

2. hijoIzq.- Apuntador que enlaza al hijo izquierdo3. hijoDer.- Apuntador que enlaza al hijo derecho

28

objetoConDatos

hijoDerhijoIzq

27

28

Page 15: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 15

Diseño de la clase de los nodos

29

Diseño de la ClaseNodo� Clase parametrizada para

recibir cualquier tipo de objeto “rojo”

� El parámetro <Tipo>

define el tipo de objeto“rojo” que estará dentro de cada nodo “azul”

� Los apuntadores HijoIzq e HijoDer NO almacenanotro nodo “azul” sinoapuntan hacia otro nodo de su mismo tipo

30

� Al eliminar un nodo “azul”, su destructor elimina el objeto“rojo” que contiene

29

30

Page 16: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 16

Operaciones en un ABB

�Creación del ABB

�Inserción de un dato

�Eliminación de un dato

�Recorridos

�Búsqueda

�Eliminar todos los nodos (vaciar)

31

Búsqueda de un dato en un ABB

32

� Se verifica que el ABB no esté vacío�El recorrido empieza en la Raíz� Si el dato es menor entonces se avanza al

próximo nodo a través del apuntador HijoIzq delo contrario se avanza hacia el HijoDer

�El recorrido termina al llegar a una hoja (no tienehijos) o al encontrar el dato solicitado

31

32

Page 17: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 17

Situaciones críticas

�Son las situaciones que se puedenpresentar al realizar operaciones conestructuras de datos

33

�El programador debe preverpara diseñar algoritmoseficientes

Creación de un ABB

Cuando se crea un ABB la raíz apunta anulo

34

Raíz nulo

33

34

Page 18: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 18

Inserción de datos en un ABB

�Situaciones críticas:�Alta en un ABB vacío�Alta por la izquierda�Alta por la derecha�Alta izquierda-derecha�Alta derecha-izquierda�Alta combinada�NO se permiten duplicados

35

Alta en un ABB vacío

Sucede cuando se inserta el primer nodo del ABB

36

35

36

Page 19: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 19

Alta por la izquierda

Sucede cuando se inserta un nodo menor que elnodo actual, el cual provoca avanzar hacia laizquierda del ABB

37

Nodo

actual

Alta por la derecha

Sucede cuando se inserta un nodo mayor que elnodo actual, el cual provoca avanzar hacia laderecha del ABB

38

Nodo

actual

37

38

Page 20: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 20

Alta izquierda-derechaOcurre cuando se inserta un nodo mayor que elhijo izquierdo del nodo actual, el cual provocaavanzar hacia la derecha del subárbol izquierdodel nodo actual

39

Nodo

actual

Alta derecha-izquierdaOcurre cuando se inserta un nodo menor que elhijo derecho del nodo actual, el cual provocaavanzar hacia la izquierda del subárbol derechodel nodo actual

40

39

40

Page 21: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 21

Alta combinada izquierda-derecha-izquierda

41

Proceso aplicable a cualquier nodo (nosolamente a la raíz)

Alta combinada derecha-izquierda-derecha

42

Proceso aplicable a cualquier nodo (nosolamente a la raíz)

41

42

Page 22: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 22

Diseño de la clase del ABB

43

Composición ABB-Nodo

�¿Por qué es una composición 1..1 si elABB tiene muchos nodos dentro de él?�Porque la cardinalidad de una

composición se define por la cantidad deatributos de tipo “parte” contenidos enla clase del “todo” (regla 1 de lacomposición)

44

43

44

Page 23: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 23

ClaseABB<Tipo>

�Clase parametrizada para prepararla para quepueda recibir cualquier Tipo de objeto “rojo”

�Tiene una restricción de tipos para “obligar” aque la clase “roja” implemente IEquatable eIComparable

� Se requiere el método Equals() para buscarun objeto “rojo” almacenado en el ABB

� Se requiere el método CompareTo() paracomparar objetos “rojos” y ordenarlos en elABB

45

Componentes de la clase

�_raiz.- Atributo privado que apunta al primer nodo del ABB

�ClaseABB().- Es el constructor que inicializavacío el ABB

�Vacio.- Propiedad pública booleana de solo lectura para detectar si el ABB está vacío(devuelve true cuando el ABB está vacío).

46

45

46

Page 24: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 24

Componentes de la clase (cont.)

� Raiz.- Propiedad con acceso asimétrico (public get y private set) que apunta al primer nodo del ABB

� AgregarNodo(Tipo objeto):void .- Métodopúblico que recibe como parámetro el objeto“rojo” que se desea almacenar en el ABB

� EliminarNodo(Tipo objeto):Tipo .-Método público que recibe como parámetro el objeto “rojo” que se desea borrar del ABB. Devuelve el objeto “rojo” eliminado.

47

Componentes de la clase (cont.)

�BuscarNodo(Tipo objeto):Tipo .-Método público que recibe como parámetro el objeto “rojo” que se desea consultar en el ABB. Devuelve el objeto “rojo” localizado.

�Vaciar():void .- Método público que recorre el ABB para eliminar todos los nodos“azules” con sus respectivos objetos “rojos”

48

47

48

Page 25: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 25

Componentes de la clase (cont.)

�~ClaseABB().- Destructor que invoca al método Vaciar() para eliminar todos los nodos del ABB.

49

Componentes de la clase (cont.)

�La clase del ABB también contiene:

�Iteradores recursivos

�Método recursivo para vaciar el ABB

�Métodos requeridos para dibujar el

ABB:

�CrearArchivoDot()

�RecorrerNodos()

50

49

50

Page 26: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 26

Tarea 3.02.- DF ABB (constructor y vacía)

�Subir a MS Teams los archivos JPG condiagramas de flujo de:

�Constructor del ABB

�Propiedad para detectar si el ABB estávacío

51

Recorridos en un ABB

�Existen varias formas de recorrer un árbol (en general)

�En profundidad

�En anchura

�PreOrden

�InOrden

�PostOrden52

51

52

Page 27: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 27

53

Recorrido en profundidad

54

Recorrido en anchura o amplitud

53

54

Page 28: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 28

55

Recorrido PreOrden

�Mostrar nodoActual

�Recorrer hijos izquierdos

�Recorrer hijos derechos

56

Pseudocódigo PreOrden

PreOrden(nodoActual, ref strResultado): nulo

/*Método recursivo para recorrer el ABB en modo PreOrden*/

1.- SI nodoActual ≠ nulo ENTONCES

1.1. strResultado = strResultado + “->” + nodoActual.Dato

1.2. PreOrden(nodoActual.HijoIzq, Ref strResultado)

1.3. PreOrden(nodoActual.HijoDer, Ref strResultado)

2.- {FIN DE LA CONDICIONAL DEL PASO 1}

55

56

Page 29: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 29

57

Diagrama de flujo PreOrden básico

� Mostrar nodoActual

� Recorrer hijos izquierdos

� Recorrer hijos derechos

58

Ejemplo PreOrden

Salida: 60, 40, 30, 20, 35, 50, 45, 90, 70, 65, 75 y 95.

� Mostrar nodoActual

� Recorrer hijos izquierdos

� Recorrer hijos derechos

57

58

Page 30: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 30

59

Recorrido InOrden

�Recorrer hijos izquierdos

�Mostrar nodo actual

�Recorrer hijos derechos

60

Pseudocódigo InOrden

InOrden(nodoActual, ref strResultado): nulo

/* Método recursivo para recorrer el ABB en modo InOrden */

1.- SI nodoActual ≠ nulo ENTONCES

1.1. InOrden(nodoActual.HijoIzq, Ref strResultado)

1.2. strResultado = strResultado + “->” + nodoActual.Dato

1.3. InOrden(nodoActual.HijoDer, Ref strResultado)

2.- {FIN DE LA CONDICIONAL DEL PASO 1}

59

60

Page 31: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 31

61

Diagrama de flujo InOrden básico

� Recorrer hijos izquierdos

� Mostrar nodoActual

� Recorrer hijos derechos

62

Ejemplo InOrden

Salida: 20, 30, 35, 40, 45, 50, 60, 65, 70, 75, 90 y 95

� Recorrer hijos izquierdos

� Mostrar nodoActual

� Recorrer hijos derechos

61

62

Page 32: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 32

63

Recorrido PostOrden

�Recorrer hijos izquierdos

�Recorrer hijos derechos

�Mostrar nodo actual

64

Pseudocódigo PostOrden

PostOrden(nodoActual, ref strResultado): nulo

/*Método recursivo para recorrer el ABB en modo PostOrden*/

1.- SI nodoActual ≠ nulo ENTONCES

1.1. PostOrden(nodoActual.HijoIzq, Ref strResultado)

1.2. PostOrden(nodoActual.HijoDer, Ref strResultado)

1.3. strResultado = strResultado + “->” + nodoActual.Dato

2.- {FIN DE LA CONDICIONAL DEL PASO 1}

63

64

Page 33: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 33

65

Diagrama de flujo PostOrden básico

� Recorrer hijos izquierdos

� Recorrer hijos derechos

� Mostrar nodoActual

66

Ejemplo PostOrden

Salida: 20, 35, 30, 45, 50, 40, 65, 75, 70, 95, 90 y 60

� Recorrer hijos izquierdos

� Recorrer hijos derechos

� Mostrar nodoActual

65

66

Page 34: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 34

Iteradores recursivos del ABB

�Debido a que el ABB se recorre de múltiplesmaneras entonces se requieren variositeradores recursivos.

�Se implementan a través de métodos privados� RecorrerPreOrden(ClaseNodo<Tipo> nodoActual):IEnumerable<Tipo>

� RecorrerInOrden(ClaseNodo<Tipo> nodoActual):IEnumerable<Tipo>

� RecorrerPostOrden(ClaseNodo<Tipo> nodoActual):IEnumerable<Tipo>

67

68

Iterador recursivo PreOrden

� Mostrar nodoActual

� Recorrer hijos izquierdos

� Recorrer hijos derechos

67

68

Page 35: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 35

69

Iterador recursivo InOrden

� Recorrer hijos izquierdos

� Mostrar nodoActual

� Recorrer hijos derechos

70

Iterador recursivo PostOrden

� Recorrer hijos izquierdos

� Recorrer hijos derechos

� Mostrar nodoActual

69

70

Page 36: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 36

¿Cómo invocar a los iteradoresrecursivos?� Los iteradores se invocan a través del ciclo foreach

� La clase ABB tiene los siguientes iteradores públicos:

Y cada uno invoca a su respectivo iterador privado:

71

public IEnumerable<Tipo> RecorrerPreOrden()

public IEnumerable<Tipo> RecorrerInOrden()

public IEnumerable<Tipo> RecorrerPostOrden()

private IEnumerable<Tipo> RecorrerPreOrden(ClaseNodo<Tipo> nodoActual)

private IEnumerable<Tipo> RecorrerInOrden(ClaseNodo<Tipo> nodoActual)

private IEnumerable<Tipo> RecorrerPostOrden(ClaseNodo<Tipo> nodoActual)

72

Opción 1

71

72

Page 37: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 37

73

Opción 2

74

Implementación

private static btn_InOrden(object sender, EventArgs e)

{

foreach(Empleado e in miABB.RecorrerInOrden())

{

. . .

. . .

}

}

73

74

Page 38: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 38

Diseño de la clase “roja”

�Requisitos: Debe contener al menos undato de los siguientes tipos:

� Int

� Double

� String

� Char

� DateTime

� Bool

� String con la ruta del archivo que contiene una fotografíadel objeto

� Sobrescritura del método ToString()75

Se recomienda consultar las

filminas

“El lenguaje C# y diseño de

formas”

Para usar el PictureBox

76

Tarea 3.03

Resolver la Tarea 3.03.- Diseño dela clase “roja” del ABB en MSTeamsSubir el archivo JPG con el

diagrama de la clase “roja”elaborado en NClassIncluir las interfaces

correspondientes

75

76

Page 39: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 39

Tarea 3.04.- DF ABB (Agregar)

�Subir a MS Teams el archivo JPG condiagrama de flujo de:

�Método para agregar un objeto “rojo” al ABB

77

Diseño de la forma de la aplicaciónvisual�Requisitos: Debe contener al menos

uno de estos controles visuales:� Textbox

� Button

� ComboBox

� DateTimePicker

� CheckBox

� PictureBox

� DataGridView

� RadioButton 78

Elija el control adecuado para

cada dato capturado

Se recomienda consultar las filminas

“Uso de los controles visuales”

77

78

Page 40: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 40

Sugerencia de diseño de forma

79

PictureBox para dibujar el ABB

PictureBox para la imagen del objeto

“rojo”

Menú de opciones

80

Genera 10 objetos “rojos” con datos aleatorios, muestra sus datos en el dataGridView y dibuja el

ABB

Agrega el objeto “rojo” al ABB con los datos capturados manualmente y actualiza el

dataGridView y el dibujo del ABB

Elimina el objeto “rojo” seleccionado del dataGridView y actualiza sus datos junto con el

dibujo del ABB

Despliega un MessageBox con los datos del objeto “rojo” seleccionado del dataGridView

Ejecuta el recorrido seleccionado en los radioButtons del “Tipo de recorrido” y despliega el

resultado en un MessageBox

Dibuja el ABB y lo muestra en el pictureBoxcorrespondiente

79

80

Page 41: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 41

81

Tipos de recorridos

Al hacer clic en alguno de losradioButtons se debe actualizarautomáticamente el dataGridView

Determina la forma de recorrido del ABB para mostrar sus datos en el dataGridView

82

Actualización de los datos del ABB

• Agregar nodo• Eliminar nodo• Vaciar• Generar aleatorios

Se deben actualizar los datos mostrados en el dataGridView y en el dibujo del ABB cada vezque se ejecute:

Los datos se mostrarán en el dataGridView de

acuerdo al radioButtonseleccionado

81

82

Page 42: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 42

Dibujar el ABB

83

Lectura

¿Cómo dibujar una estructura de datos utilizando Graphviz y su

lenguaje dot?

84

83

84

Page 43: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 43

Demostración

Graphviz y su lenguaje dot

85

86

Tarea 3.05.- GraphViz

Leer ¿Cómo dibujar una estructura de datosutilizando Graphviz y su lenguaje dot?

Contestar el cuestionario en MS TeamsSe aceptará esta tarea si se obtiene calificación aprobatoria

http://www.itnuevolaredo.edu.mx/takeyas/Apuntes/Estructura%20de%20Datos/Apuntes/Graphviz.pdf

85

86

Page 44: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 44

87

Investigación

• Muestre los datosgenerados en el dataGridView

• Agregue un botón a su aplicaciónpara crear 10 nodos con datosgenerados de manera aleatoria

88

Sugerencia• Sugerencia para seleccionar las

carpetas de:• Archivo BAT• Archivo con el programa DOT• Archivo JPG con la figura del ABB

87

88

Page 45: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 45

89

Recomendación• Declarar una variable global de

tipo string que almacene la ruta de la carpeta que almacena los archivos de la figura del ABB

90

Tarea 3.06.- Diseño de la forma del ABB

• Implementar el método para agregarobjetos “rojos” al ABB y visualizarlosen el dataGridView

• Implementar el botón “Dibujar el ABB”• Subir a MS Teams un archivo

comprimido con la aplicacióncompleta (P. ejem. LopezTakeyasBruno.ZIP)

• Diseñar la forma en C#:• Capturar los datos usando los controles visuales

adecuados• Agregar un dataGridView de solo lectura para visualizar

los datos de los objetos “rojos”

89

90

Page 46: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 46

Tarea 3.07.- DF ABB (Buscar)

�Subir a MS Teams el archivo JPG condiagrama de flujo de:

�Método para buscar un objeto “rojo” en elABB (debe devolver el objeto encontrado)

91

Eliminación de un nodo en un ABB

�Al borrar un nodo se debe mantener el principiode que los hijos izquierdos son menores y loshijos derechos mayores que el padre

�En algunos casos se debe hacer una sustituciónde un nodo para mantener el principio

� Se puede interrumpir la búsqueda por anticipadoya que el ABB almacena datos ordenados

92

91

92

Page 47: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 47

Situaciones críticas de las bajas enun ABB

�Baja de un nodo sin hijos (hoja)

�Baja de un nodo con hijo izquierdosolamente

�Baja de un nodo con hijo derecho solamente

�Baja de un nodo con ambos hijos

�Baja del único nodo

�Verificar la existencia del dato

93

Baja de un nodo sin hijos

94

Se elimina el nodo y el apuntador de su padrehacia él

93

94

Page 48: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 48

Baja de un nodo con hijo izquierdosolamente

95

El hijo izquierdo reemplaza al nodo eliminado

Baja de un nodo con hijo derecho solamente

96

El hijo derecho reemplaza al nodo eliminado

95

96

Page 49: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 49

Baja de un nodo con ambos hijos(opción 1)

97

Se sustituye el nodo a eliminar por el nodo menordel subárbol derecho

Durante la búsqueda del nodo menor, en algunos casos también se reacomodan nodos intermedios

Baja de un nodo con ambos hijos(opción 2)

98

Se sustituye el nodo a eliminar por el nodo mayordel subárbol izquierdo

Durante la búsqueda del nodo menor, en algunos casos también se reacomodan nodos intermedios

97

98

Page 50: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 50

Eliminación de objetos

�La forma natural de borrar un objeto esasignarle el valor null

9999

// Creación del objeto “azul” del nodoActual

ClaseNodo<Tipo> nodoActual = new ClaseNodo<Tipo>();

.

.

nodoActual = null; // Eliminación del nodoActual

�Sin embargo, no todos los datos aceptan elvalor null, entonces… ¿cómo se eliminarían?

Destructor de la clase “azul”

� La ClaseNodo<Tipo> es parametrizada y estápreparada para recibir un objeto “rojo” de cualquiertipo.

� El destructor de la clase “azul” elimina el objeto condatos “rojo” que contiene.

� Utiliza default(Tipo) para eliminar el objeto“rojo” porque desconoce si el ObjetoConDatos aceptael valor null.

100100

~ClaseNodo() // Destructor de la clase “azul”

{

// Elimina el ObjetoConDatos “rojo”

ObjetoConDatos = default(Tipo);

}

99

100

Page 51: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 51

Tarea 3.08.- DF ABB (Eliminar)

�Hacer el diagrama de flujo de:

�Método Eliminar( )

� Devolver el objeto “rojo” eliminado

101

Vaciar el ABB

�Recorrer el árbol y borrar cada uno de sus nodos

�Se recomienda apoyarse en una variante del recorrido PostOrden (recorrer primero el subárbol izquierdo, luego el subárbol derecho y por ultimo visitar el nodo a eliminar)

�Encontrar las hojas y enviarlas al métodoEliminar()

102

101

102

Page 52: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 52

103

Diagrama de flujo del método para vaciar

104

Método recursivo RecorrerYBorrar()

�Utiliza una variante del recorridoPostOrden para encontrar cada hoja del árbol y enviarlas como parámetro al método Eliminar()

�Una hoja es el nodo más fácil de eliminar

103

104

Page 53: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 53

105

Diagrama de flujo del método recursivo RecorrerYBorrar()

Tarea 3.09.- DF ABB (Vaciar y Destructor)

�Subir a MS Teams los archivos JPG condiagramas de flujo de:

�Método para vaciar el ABB

�Destructor del ABB

106

105

106

Page 54: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 54

Tarea 3.10.- Aplicación completa del ABB

�Agregar un botón “Vaciar”� Solicitar al usuario que confirme las

operaciones (insertar, eliminar, vaciar, etc.).Preguntarle si está seguro que desea realizar laoperación solicitada

�Mostrar los mensajes adecuados�Subir a MS Teams un archivo comprimido

con la aplicación completa (P. ejem.LopezTakeyasBruno.ZIP)

107

Nivel de abstracción

108

�No se debe perder de vista que los objetos“rojos” son privados, por lo tanto suscomponentes son inacesibles para elobjeto “verde”

Raíz

nulo

nulo nulo

nulo

nulo nulo

107

108

Page 55: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 55

Nivel de abstracción (cont.)

109

�El objeto “verde” recibe un objeto “rojo” ylo compara para almacenarlo y ordenarlo¡¡¡ SIN SABER LO QUE TIENE DENTRO !!!

� ¿Cómo es posible que el objeto “verde” compare y almacene objetos “rojos” sin tener acceso a sus componentes?

“Pensar en objetos …”

110

� El objeto “verde” NO compara los objetos “rojos” (ellos mismosse comparan entre sí).

� El objeto “verde” NO requiere acceso a los componentes de losobjetos “rojos” para manipularlos.

� Recibe cualquier tipo de objetos “rojos” …

¡¡¡ SIN MODIFICAR NI UNA LÍNEA DE SU CÓDIGO!!!

� ¿Cómo lo logra? …

� Clases parametrizadas

� Uso de interfaces

� Composición

� Comportamiento polimórfico

� Restricción de tipos

109

110

Page 56: ÁRBOLES BINARIOS DE BÚSQUEDA de Datos/Apu… · Binarios.-Árboles de grado 2. Binariosde búsqueda.-Árboles binarios donde los hijos izquierdos son menores y los derechos con

Estructuras de Datos

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 56

Lectura

Para reforzar este tema se recomienda la lectura de:

Capítulo 8.- Árboles binarios

111

Otros libros del autor

http://www.itnuevolaredo.edu.mx/Takeyas/Libro

Bruno López [email protected]

111

112