Estructuras de datos y algoritmos

59
Oscar Bedoya. [email protected] http://eisc.univalle.edu.co/~oscarbed/ Estructuras/ Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y Estructuras de datos y algoritmos algoritmos

description

Estructuras de datos y algoritmos. Oscar Bedoya. [email protected] http://eisc.univalle.edu.co/~oscarbed/Estructuras/ Edificio 331, 2º piso, E.I.S.C. Arboles. Nodo La anatomía de un nodo en un árbol binario es la siguiente:. Puntero al subarbol izquierdo. - PowerPoint PPT Presentation

Transcript of Estructuras de datos y algoritmos

Page 1: Estructuras de datos y algoritmos

Oscar Bedoya.

[email protected]

http://eisc.univalle.edu.co/~oscarbed/Estructuras/

Edificio 331, 2º piso, E.I.S.C.

Estructuras de datos y Estructuras de datos y algoritmosalgoritmos

Page 2: Estructuras de datos y algoritmos

Arboles

Nodo

La anatomía de un nodo en un árbol binario es la siguiente:

AA

Puntero al subarbol derecho

Puntero al subarbol izquierdo

Page 3: Estructuras de datos y algoritmos

Árboles

Árbol con 8 nodos

A

F

D

G

EC

B

H

Page 4: Estructuras de datos y algoritmos

Arboles

Raiz

Es el nodo que no es apuntado por ningún otro nodo

A

F

D

G

EC

B

H

Page 5: Estructuras de datos y algoritmos

Arboles

Padre

X es el padre de Y si X apunta a Y

A

F

D

G

EC

B

H

A es el padre de B y de D

B es el padre de H y C

H no es padre de nadie

A no es el padre de H!

Page 6: Estructuras de datos y algoritmos

Arboles

Hijo

Y es el hijo de X si X apunta a Y

A

F

D

G

EC

B

H

B y D son hijos de A

H y C son hijos de B

H no es un hijo de A

Page 7: Estructuras de datos y algoritmos

Arboles

Hoja

Una hoja es un nodo que no tiene hijos

A

F

D

G

EC

B

H

Page 8: Estructuras de datos y algoritmos

Arboles

Nodo no terminal

Es un nodo que no es hoja

A

F

D

G

EC

B

H

Page 9: Estructuras de datos y algoritmos

Arboles

Camino

Es el conjunto de nodos que se deben visitar con el propósito de llegar a un nodo especifico

Un árbol siempre se examina hacia abajo

Los apuntadores derecho e izquierdo de cualquier nodo apuntan al árbol derecho o izquierdo que siguen a ese nodo. Nunca apuntan a los nodos precedentes

Page 10: Estructuras de datos y algoritmos

Árboles

El camino A->D->F se presenta en el árbol

El camino G->E->D->A->B->C no se da en el camino

A

F

D

G

EC

B

Page 11: Estructuras de datos y algoritmos

Arboles

Longitud

Es el número de nodos que se deben recorrer para pasar de un nodo a otro

Page 12: Estructuras de datos y algoritmos

Árboles

La longitud entre A y G es 3La longitud entre A y A es 0La longitud entre D y F es 1

A

F

D

G

EC

B

Page 13: Estructuras de datos y algoritmos

Arboles

Ancestro

Un nodo X es ancestro de Y si existe una camino ente X y Y

Page 14: Estructuras de datos y algoritmos

Árboles

Es G un ancestro de B?Es B un ancestro de E?Es A un ancestro de F?

A

F

D

G

EC

B

Page 15: Estructuras de datos y algoritmos

Arboles

Nivel

Cada nodo tiene un nivel dentro de un árbol binario. Por definición el nodo raíz tiene un nivel 0 y los demás nodos tiene el nivel de su padre más 1

Page 16: Estructuras de datos y algoritmos

Árboles

Nivel 0

A

F

D

G

EC

B Nivel 1Nivel 2Nivel 3

Page 17: Estructuras de datos y algoritmos

Arboles

Grado de un nodo

Es el número de hijosEl grado de un nodo terminal siempre es 0En un árbol binario el grado de cada nodo varia entre 0 y 2

Page 18: Estructuras de datos y algoritmos

Árboles

El grado de A es 2El grado de D es 2El grado de E es 1El grado de C, G y F es 0

A

F

D

G

EC

B

Page 19: Estructuras de datos y algoritmos

Arboles

Altura de un árbol

Es el nivel de la hoja o de las hojas que están más distantes de la raíz

Page 20: Estructuras de datos y algoritmos

Árboles

La altura del árbol es 3

A

F

D

G

EC

B

Page 21: Estructuras de datos y algoritmos

Árboles

Cuántos nodos tieneCuál es el nodo raízCuáles son los nodos no terminalesCuáles son las hojasCuál es el grado del nodo ECuál es el nivel del nodo ICuál es la longitud entre A y KSe presente el camino B-A-D-FCuál es la altura del árbol

A

F

D

G

EC

B

H

I J

K

Page 22: Estructuras de datos y algoritmos

Arboles

Árbol binario

Un árbol binario es un conjunto finito de elementos que está vacío o dividido en tres subconjuntos separados.

El primer subconjunto contiene un elemento único llamado raíz del árbol. Los otros dos subconjuntos son por si mismos árboles binarios y se les conoce como subárboles izquierdo y derecho del árbol original.

Un subárbol izquierdo o derecho puede estar vacío. Cada elemento de un árbol binario se denomina nodo del árbol

Page 23: Estructuras de datos y algoritmos

Árboles

Es este un árbol binario?

A

F

D

G

EC

B

J

Page 24: Estructuras de datos y algoritmos

Arboles

Árbol estrictamente binario

Si cada nodo que no es una hoja en un árbol binario tiene subárboles izquierdo y derecho que no están vacíos, se clasifica como árbol estrictamente binario

Page 25: Estructuras de datos y algoritmos

Árboles

Es este un árbol estrictamente binario?

A

F

D

G

E

B

J

Page 26: Estructuras de datos y algoritmos

Árboles

Es este un árbol estrictamente binario?

A

F

D

G

E

B

J

H

Page 27: Estructuras de datos y algoritmos

Arboles

Árbol binario completo

Un árbol que es estrictamente binario y tiene todas sus hojas en el nivel d, donde d es la profundad del árbol, es un árbol binario completo

Page 28: Estructuras de datos y algoritmos

Árboles

Es este un árbol binario completo?

A

F

D

G

E

B

J

Page 29: Estructuras de datos y algoritmos

Árboles

Es este un árbol binario completo?

A

F

D

G E

B

H

Page 30: Estructuras de datos y algoritmos

Arboles

Árbol binario completo

Un árbol binario completo tiene 2l nodos en cada nivel l, donde l varia entre 0 y d

totalNodos = 20 + 21 + 22 + . . . + 2d = = 2d+1 -1

•Cuántos nodos no terminales tiene un árbol binario completo?•Cuál es la profundidad de un árbol binario completo con T nodos?

d

jj

02

Page 31: Estructuras de datos y algoritmos

Arboles

Árbol de búsqueda binaria

Un árbol binario en el que los elementos del subárbol izquierdo de un nodo n son menores que el contenido de n, y que todos los elementos en el subárbol derecho de n son mayores o iguales que el contenido de n se denomina árbol de búsqueda binaria

Si un árbol de búsqueda binaria se recorre en orden (izquierdo, raíz, derecho), los números se imprimen en orden ascendente

Page 32: Estructuras de datos y algoritmos

Árboles

Es este un árbol de búsqueda binaria?

20

34

30

26

24

1

21

Page 33: Estructuras de datos y algoritmos

Arboles

Árbol balanceado

Un árbol binario balanceado o AVL, es aquel en el que las alturas de los dos subárboles de cada nodo nunca difieren en más de 1.

El balance de un nodo en un árbol binario se define como la altura de su subárbol izquierdo menos la altura de su subárbol derecho

Page 34: Estructuras de datos y algoritmos

Arboles

Árbol balanceado

Un árbol binario balanceado o AVL, es aquel en el que el balance para cada nodo es -1, 0 ó 1

Page 35: Estructuras de datos y algoritmos

Árboles

Se indican los balances para cada nodo

A

F

D

G

E

B

B

-1

1

0-1

0

1

0

Page 36: Estructuras de datos y algoritmos

Árboles

Indique los balances de cada nodo, y determine si el árbol es o no, AVL

A

F

D

G

E

B

B

Page 37: Estructuras de datos y algoritmos

Árboles

A

F

D

G

E

B

B

0 0

0

0

-1

-2

-1

Page 38: Estructuras de datos y algoritmos

Árboles

Indique los balances de cada nodo, y determine si el árbol es o no, AVL

A

F

D

G

E

B

B

Page 39: Estructuras de datos y algoritmos

Árboles

A

F

D

G

E

B

B

0

0

0-1

-1

11

Page 40: Estructuras de datos y algoritmos

Árboles

Indique los balances de cada nodo, y determine si el árbol es o no, AVL

A

F

D

G

E

B

B

E

E G

Page 41: Estructuras de datos y algoritmos

Árboles

A

F

D

G

E

B

C

H

I J

0

0 0

1

1

F0

1

-1

0

+2

-2

Page 42: Estructuras de datos y algoritmos

Árboles

Formas de recorrer un árbol

•Preorden•Inorden •posorden

Page 43: Estructuras de datos y algoritmos

Árboles

Preorden

Examinar el dato del nodo raízRecorrer el árbol izquierdo en preordenRecorrer el árbol derecho en preorden

Page 44: Estructuras de datos y algoritmos

Árboles

Recorrer el árbol en preorden

A

G

C

F

B

D E

Page 45: Estructuras de datos y algoritmos

Árboles

ABDECFGA

G

C

F

B

D E

Page 46: Estructuras de datos y algoritmos

Árboles

Recorrer el árbol en preorden

10

17

15

16

14

5

3 7

9 201 4

Page 47: Estructuras de datos y algoritmos

Árboles

10-5-3-1-4-7-9-15-14-17-16-20

10

17

15

16

14

5

3 7

9 201 4

Page 48: Estructuras de datos y algoritmos

Árboles

Inorden

Recorrer el árbol izquierdo en inordenExaminar el dato del nodo raízRecorrer el árbol derecho en inorden

Page 49: Estructuras de datos y algoritmos

Árboles

Recorrer el árbol en inorden

10

15

12

11

5

3 7

Page 50: Estructuras de datos y algoritmos

Árboles

3-5-7-10-11-12-1510

15

12

11

5

3 7

Page 51: Estructuras de datos y algoritmos

Árboles

A

G

C

K

F

B

D E

J LH I

Page 52: Estructuras de datos y algoritmos

Árboles

A

G

C

K

F

B

D E

J LH I

H D I B E A J F C K G L

Page 53: Estructuras de datos y algoritmos

Árboles

Posorden

Recorrer el árbol izquierdo en posordenRecorrer el árbol derecho en posordenExaminar el dato del nodo raíz

Page 54: Estructuras de datos y algoritmos

Árboles

A

G

C

K

F

B

D E

J LH I

-Recorrer el árbol en posorden

Page 55: Estructuras de datos y algoritmos

Árboles

A

G

C

K

F

B

D E

J LH I

H I D E B J F K L G C A

Page 56: Estructuras de datos y algoritmos

Árboles

A

E

C

I

D

B

GF J

Muestre el resultado de recorrer el árbol en preorden, inorden y posorden

Page 57: Estructuras de datos y algoritmos

Árboles

A

E

C

I

D

B

GF J

Preorden

A B C D F G E I J

Page 58: Estructuras de datos y algoritmos

Árboles

A

E

C

I

D

B

GF J

Inorden

B A F D G C I E J

Page 59: Estructuras de datos y algoritmos

Árboles

A

E

C

I

D

B

GF J

Posorden

B F G D I J E C A