Beruflich Dokumente
Kultur Dokumente
34
76
31
50
22
90
15
2
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU)
Nodo: cada uno de los elementos de un rbol Nodo padre: el nico antecesor directo de un nodo Nodo hijo: descendiente directo de un nodo Raz: antecesor comn de todos los nodos del rbol, que a su vez no tiene antecesores Hoja o nodo terminal: nodo sin descendencia Sub-rbol: conjunto formado por un nodo y todos sus descendientes Arbol nulo: rbol sin nodos
76
31
50
22
90
15
......... A1 A2 Ak
76
31
50
22
90
15
Orden previo: 34, 4, 50, 22, 76, 31, 90, 2, 15 Orden simtrico: 50, 4, 22, 34, 76, 2, 90, 31, 15 Orden posterior: 50, 22, 4, 76, 2, 90, 15, 31, 34
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU)
Arbol n-ario: rbol de grado n 1 Se define recursivamente: 1. Un rbol formado por un nico nodo es un rbol n-ario 2. Un rbol n-ario se puede construir enraizando k n rboles n-arios a un nico nodo r El nmero mximo de nodos en el nivel i-simo de un rbol n-ario es ni Un rbol unario es un tipo degenerado de rbol n-ario, equivalente a una lista
Recorrido en profundidad
Sea n0 el nodo raz de un rbol A, y sean A1 , A2 , . . . , Ak los k sub-rboles descendientes de n0 , ordenados de izquierda a derecha
n0 A
......... A1 A2 Ak
Recorrido en profundidad
Sea n0 el nodo raz de un rbol A, y sean A1 , A2 , . . . , Ak los k sub-rboles descendientes de n0 , ordenados de izquierda a derecha El recorrido en profundidad de A se define recursivamente como sigue:
rp(A) = (n0 , rp(A1 ), rp(A2 ), . . . , rp(Ak ))
Recorrido en profundidad
Sea n0 el nodo raz de un rbol A, y sean A1 , A2 , . . . , Ak los k sub-rboles descendientes de n0 , ordenados de izquierda a derecha El recorrido en profundidad de A se define recursivamente como sigue:
rp(A) = (n0 , rp(A1 ), rp(A2 ), . . . , rp(Ak ))
Recorrido en anchura
Sea L(i) la lista de nodos, ordenados de izquierda a derecha, en el nivel i del rbol A, con i [1, h], siendo h la altura de A
34 L(0)={34}
76
31
50
22
90
15
L(3)={2}
Recorrido en anchura
Sea L(i) la lista de nodos, ordenados de izquierda a derecha, en el nivel i del rbol A, con i [1, h], siendo h la altura de A El recorrido en anchura de A se define como sigue:
ra(A) = (L(0), L(1), . . . , L(h))
Recorrido en anchura
Sea L(i) la lista de nodos, ordenados de izquierda a derecha, en el nivel i del rbol A, con i [1, h], siendo h la altura de A El recorrido en anchura de A se define como sigue:
ra(A) = (L(0), L(1), . . . , L(h))
El recorrido en anchura enumera los nodos que hay en cada nivel, de izquierda a derecha, desde el nivel 0 hasta el nivel ms profundo del rbol.
TAD Arbol
Tipos ELEMENTO NODO ARBOL Constantes NODO_NULO
TAD Arbol
procedimiento inicializar (ref t: ARBOL) Inicializa la variable t de tipo ARBOL Realiza las reservas dinmicas de memoria necesarias Como resultado, se tendr un rbol t vaco inicializar (t): primera accin a realizar sobre t
TAD Arbol
funcin aadir_hijo (ref t: ARBOL, ref n: NODO, x: ELEMENTO): NODO Crea un nuevo nodo con la informacin x, y lo inserta como siguiente hijo del nodo n en el rbol t Precondicin: n = NODO_NULO si y slo si t es un rbol vaco Si n = NODO_NULO entonces el nuevo nodo es raz de t Devuelve el nodo recin creado
TAD Arbol
aadir_hijo(A,c,12)
a 5
a 5
A
b 7 c 1
b 7 c
A
1
12
TAD Arbol
procedimiento eliminar_subrbol (ref t: ARBOL, n: NODO) Elimina el subrbol que cuelga del nodo n del rbol t Si n = NODO_NULO, el procedimiento no hace nada Si n es la raz de t, el procedimiento elimina el rbol completo, y t queda vaco
TAD Arbol
eliminar_subrbol(A,c)
a 5
A
a 5
1
b 7
TAD Arbol
funcin vaco?(t: ARBOL): booleano Devuelve: TRUE FALSE si el rbol t est vaco en caso contrario
TAD Arbol
funcin raz(t: ARBOL): NODO Devuelve el nodo raz del rbol t Si t est vaco, devuelve NODO_NULO
TAD Arbol
funcin padre(t: ARBOL, n: NODO): NODO Devuelve el nodo padre de n en el rbol t Si n no tiene padre es decir, si se trata de la raz del rbol t, la funcin devuelve NODO_NULO
TAD Arbol
funcin primer_hijo(t: ARBOL, n: NODO): NODO Devuelve el primer hijo del nodo n en el rbol t Si n no tiene hijos, la funcin devuelve NODO_NULO
TAD Arbol
funcin siguiente_hermano(t: ARBOL, n: NODO): NODO Devuelve el siguiente hermano a la derecha del nodo n en el rbol t Si n es el ltimo de los hermanos, la funcin devuelve NODO_NULO
TAD Arbol
funcin valor (t: ARBOL, n: NODO): ELEMENTO Devuelve el valor almacenado en el nodo n del rbol t Precondicin: n = NODO_NULO
TAD Arbol
A
b 7 c 1 f 8
raz(A)
a a d
padre(A,c)
primer_hijo(A,c)
siguiente_hermano(A,c)
d 3 e 12
valor(A,c)
A
2 7 3 1 4 8
12
1 0 5 0
2 1 7
3 1 1 1
4 1 8
5 3 3 2
6 3 12
7 ........ ........
MAX
A
2 7 3 1 4 8
Indices de nodo
1 2 3 4 5
5 7 1 8 3 12
NULO
NULO
NULO
NULO
12
NULO
A
3 12
Valor
12
Primer hijo