Anda di halaman 1dari 7

Tema 1. Tcnicas de Implementacin 4.

rboles

4 rboles
Un rbol es una estructura de datos jerarquizada

Cada dato reside en un nodo, y existen relaciones de parentesco


entre nodos:
padre, hijo, hermano, ascendiente, descendiente, etc.

Libro Raz
Ejemplo:
Captulos de Nodos

un libro C1 C2 C3

Hojas

S1.1 S1.2 S2.1 S2.2 S2.3

Hermanos
S2.2.1 S2.2.2

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 66

Tema 1. Tcnicas de Implementacin 4. rboles

Definicin recursiva de los rboles


Un nodo simple n constituye un rbol
se denomina la raz del rbol

Supongamos que n es un nodo y T1, T2, ..., n


Tk son rboles cuyas races son n1, n2, ...,
nk, respectivamente.
Podemos construir un nuevo rbol
...
haciendo que n sea el padre de los T1 T2 Tk
nodos n1, n2, ..., nk
En el nuevo rbol n es la raz y n1, n2, ...,
nk se denominan los hijos de n

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 67

Tema 1. Tcnicas de Implementacin 4. rboles

Terminologa
Camino: secuencia de nodos tales que cada uno es hijo del
anterior
Longitud del camino: n de nodos - 1 (la longitud del camino de
un nodo a s mismo es 0)
Ascendiente: un nodo es ascendiente de otro si hay un camino
del primero al segundo
Descendiente: un nodo es descendiente de otro si hay un
camino del segundo al primero
Subrbol o Rama: un nodo y todos sus descendientes
Altura de un rbol: longitud de su camino ms largo ms 1
Profundidad de un nodo: longitud del camino desde la raz a
ese nodo
rbol n-ario: rbol en que cada nodo puede tener como mximo
n hijos

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 68
Tema 1. Tcnicas de Implementacin 4. rboles

4.1 Ordenacin y recorrido


Un rbol se considera ordenado si hay un orden definido para los
hijos de cada nodo

En un rbol ordenado, los hijos de un nodo se ordenan de


izquierda a derecha

A A

B C C B

Dos rboles ordenados, distintos

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 69

Tema 1. Tcnicas de Implementacin 4. rboles

Recorrido de un rbol
El recorrido de un rbol es una forma sistemtica de visitar todos
sus nodos

El recorrido de los nodos se suele hacer de 3 modos:


Preorden: la raz n seguida de los nodos
de T1 en preorden, luego los de T2 en n
preorden, ...
Postorden: los nodos de T1 en postorden,
luego los de T2 en postorden, y as hasta ...
T1 T2 Tk
la lista de Tk en postorden, finalizando
con el nodo raz n
Inorden: los nodos de T1 en inorden, Preorden: n, T1, T2, ..., Tk
seguida de la raz n, luego los subrboles Postorden: T1, T2, ..., Tk, n
T2, ..., Tk en inorden Inorden: T1, n, T2, ..., Tk

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 70

Tema 1. Tcnicas de Implementacin 4. rboles

Recorrido de un rbol (cont.)

Mtodo para producir las ordenaciones a mano:

Preorden: se lista cada nodo la


primera vez que se pasa por l
1
Postorden: se lista cada nodo
la ltima vez que se pasa por l
2 3 4
Inorden: se listan las hojas la
primera vez que se pasa por
ellas, pero los nodos interiores 5 6 7
la segunda
8 9 10

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 71
Tema 1. Tcnicas de Implementacin 4. rboles

Recorrido de un rbol (cont.)

mtodo Preorden (N : Nodo; A : Arbol)


visita N;
para cada hijo H de N, y empezando por la izquierda
hacer
Preorden(H,A);
fpara;
fmtodo;

mtodo Postorden (N : Nodo; A : Arbol)


para cada hijo H de N, y empezando por la izquierda
hacer
Postorden(H,A);
fpara;
visita N;
fmtodo;

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 72

Tema 1. Tcnicas de Implementacin 4. rboles

Recorrido de un rbol (cont.)

mtodo Inorden (N : Nodo; A : Arbol)


si N es una hoja entonces
visita N;
si no
Inorden(hijo ms a la izquierda de N,A);
visita N;
para cada hijo H de N, excepto el ms a la
izquierda, y empezando por la izquierda
hacer
Inorden(H,A);
fpara;
fsi;
fmtodo;

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 73

Tema 1. Tcnicas de Implementacin 4. rboles

Ejemplo de ordenacin de expresiones


aritmticas
Expresin: 5+8*(3+4)-3*5:
+
preorden: +5-*8+3,4*3,5
inorden: 5+(8*(3+4)-(3*5)) es la 5 -
expresin en notacin
matemtica normal * *
postorden: 5,8,3,4+*3,5*-+ es la
expresin en Notacin Polaca 8 + 3 5
Inversa (RPN)
3 4

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 74
Tema 1. Tcnicas de Implementacin 4. rboles

4.2 Implementacin de rboles


Implementacin con vectores de rboles n-arios
rbol 3-ario 0 0 1 2 3 4 5 6 7 8 9 10 11 12
A
A B D E G L M

1 2 3 hijoi(x)=n*pos(x)+i (i=1..n)
B D padre(x)=(pos(x)-1) div n

4 5 6 7 8 9 10 11 12
E G L M

+Navegacin por el rbol sencilla


-Desperdicia memoria cuando el rbol no est lleno
-Operaciones de unin poco eficientes
M. Aldea, M. Gonzlez, P. Snchez
Estructuras de Datos 2/11/11 75

Tema 1. Tcnicas de Implementacin 4. rboles

Implementacin primer-hijo/hermano-derecho
T
Raiz A rbol T A

B C
B C

+Facilita las operaciones de tipo unin


+Utiliza la memoria justa
-Navegacin por el rbol (muy) complicada
M. Aldea, M. Gonzlez, P. Snchez
Estructuras de Datos 2/11/11 76

Tema 1. Tcnicas de Implementacin 4. rboles

Implementacin padre/primer-hijo/hermano-
derecho
T
Raiz rbol T A
A

B C

B C
D

+Facilita las operaciones de tipo unin


+Utiliza la memoria justa
-Navegacin por el rbol complicada
M. Aldea, M. Gonzlez, P. Snchez
Estructuras de Datos 2/11/11 77
Tema 1. Tcnicas de Implementacin 4. rboles

Implementacin padre/lista-hijos

+Facilita las operaciones de tipo A


unin
+Utiliza la memoria justa
+Navegacin por el rbol menos
complicada que con otras
implementaciones con punteros B C D

-Estructura ms compleja

E F G

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 78

Tema 1. Tcnicas de Implementacin 4. rboles

4.3 rboles binarios


Un rbol binario: rbol ordenado de aridad 2
cada nodo puede tener como mximo dos hijos (izquierdo y
derecho)
en la ordenacin de los hijos, el izquierdo precede al derecho

1 1 1

2 2 2

3 4 3 4 3 4

5 5 5

Un rbol ordinario Dos rboles binarios

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 79

Tema 1. Tcnicas de Implementacin 4. rboles

Implementacin de rboles binarios


Punteros al padre, al hijo izquierdo, y al hijo derecho:

1
1

2
2

3 4

3 4

Tambin se puede implementar slo con punteros a los hijos


la navegacin es un poco ms difcil
M. Aldea, M. Gonzlez, P. Snchez
Estructuras de Datos 2/11/11 80
Tema 1. Tcnicas de Implementacin 4. rboles

4.4 rboles binarios de bsqueda


Un rbol binario de bsqueda es un rbol binario
en el que entre sus elementos existe una relacin de orden total
para cada nodo, todos sus descendientes izquierdos son
menores que l, y los derechos mayores

2 9

1 5 11

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 81

Tema 1. Tcnicas de Implementacin 4. rboles

Insercin en un rbol binario de bsqueda


Bajar por el rbol hasta encontrar la posicin adecuada

Inserta 8 Inserta 4
7
7

2 9
2 9

1 5 11
1 5 8 11

3
3

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 82

Tema 1. Tcnicas de Implementacin 4. rboles

Eliminacin en un rbol binario de bsqueda


Se consideren tres casos:
a) Si el nodo es una hoja, se puede borrar sin ms

b) Si el nodo tiene un solo hijo se puede eliminar sustituyndolo


en el rbol por ese hijo (con toda su descendencia)

7 7

2 9 2 9

1 5 1 3

3 borrado del 5

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 83
Tema 1. Tcnicas de Implementacin 4. rboles

Eliminacin en un rbol binario de bsqueda (cont.)

c) Si el nodo tiene dos hijos lo reemplazaremos por el menor


elemento de su subrbol derecho, que a su vez eliminaremos
- este menor elemento eliminado no tiene hijo izquierdo, por lo
que se puede borrar con a) o b)

7 7

2 9 3 9

1 5 1 5

3 4

4 borrado del 2

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 84

Tema 1. Tcnicas de Implementacin 4. rboles

Eficiencia de las operaciones de un rbol binario


de bsqueda
Insercin, bsqueda y eliminacin: O(altura)
En promedio, para datos ordenados aleatoriamente,
alturalog2(n) (donde n es el nmero de nodos del rbol)
luego la eficiencia promedio de las operaciones ser O(log n)

Sin embargo, para entradas parcialmente 7


ordenadas:
rbol muy
el rbol puede puede estar muy desequilibrado
desequilibrado (alturan) 9

en este caso puede interesar utilizar


algoritmos que mantengan el rbol 11
equilibrado
12

M. Aldea, M. Gonzlez, P. Snchez


Estructuras de Datos 2/11/11 85