Estructuras de datos y algoritmos
Embed Size (px)
description
Transcript of Estructuras de datos y algoritmos

Oscar Bedoya.
http://eisc.univalle.edu.co/~oscarbed/Estructuras/
Edificio 331, 2º piso, E.I.S.C.
Estructuras de datos y Estructuras de datos y algoritmosalgoritmos

Arboles
Nodo
La anatomía de un nodo en un árbol binario es la siguiente:
AA
Puntero al subarbol derecho
Puntero al subarbol izquierdo

Árboles
Árbol con 8 nodos
A
F
D
G
EC
B
H

Arboles
Raiz
Es el nodo que no es apuntado por ningún otro nodo
A
F
D
G
EC
B
H

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!

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

Arboles
Hoja
Una hoja es un nodo que no tiene hijos
A
F
D
G
EC
B
H

Arboles
Nodo no terminal
Es un nodo que no es hoja
A
F
D
G
EC
B
H

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

Á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

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

Á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

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

Á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

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

Árboles
Nivel 0
A
F
D
G
EC
B Nivel 1Nivel 2Nivel 3

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

Á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

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

Árboles
La altura del árbol es 3
A
F
D
G
EC
B

Á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

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

Árboles
Es este un árbol binario?
A
F
D
G
EC
B
J

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

Árboles
Es este un árbol estrictamente binario?
A
F
D
G
E
B
J

Árboles
Es este un árbol estrictamente binario?
A
F
D
G
E
B
J
H

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

Árboles
Es este un árbol binario completo?
A
F
D
G
E
B
J

Árboles
Es este un árbol binario completo?
A
F
D
G E
B
H

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

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

Árboles
Es este un árbol de búsqueda binaria?
20
34
30
26
24
1
21

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

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

Árboles
Se indican los balances para cada nodo
A
F
D
G
E
B
B
-1
1
0-1
0
1
0

Árboles
Indique los balances de cada nodo, y determine si el árbol es o no, AVL
A
F
D
G
E
B
B

Árboles
A
F
D
G
E
B
B
0 0
0
0
-1
-2
-1

Árboles
Indique los balances de cada nodo, y determine si el árbol es o no, AVL
A
F
D
G
E
B
B

Árboles
A
F
D
G
E
B
B
0
0
0-1
-1
11

Á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

Árboles
A
F
D
G
E
B
C
H
I J
0
0 0
1
1
F0
1
-1
0
+2
-2

Árboles
Formas de recorrer un árbol
•Preorden•Inorden •posorden

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

Árboles
Recorrer el árbol en preorden
A
G
C
F
B
D E

Árboles
ABDECFGA
G
C
F
B
D E

Árboles
Recorrer el árbol en preorden
10
17
15
16
14
5
3 7
9 201 4

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

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

Árboles
Recorrer el árbol en inorden
10
15
12
11
5
3 7

Árboles
3-5-7-10-11-12-1510
15
12
11
5
3 7

Árboles
A
G
C
K
F
B
D E
J LH I

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

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

Árboles
A
G
C
K
F
B
D E
J LH I
-Recorrer el árbol en posorden

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

Árboles
A
E
C
I
D
B
GF J
Muestre el resultado de recorrer el árbol en preorden, inorden y posorden

Árboles
A
E
C
I
D
B
GF J
Preorden
A B C D F G E I J

Árboles
A
E
C
I
D
B
GF J
Inorden
B A F D G C I E J

Árboles
A
E
C
I
D
B
GF J
Posorden
B F G D I J E C A