Download Ejercicios del Tema 3 Estructuras jerárquicas: Árboles

Document related concepts

Árbol AVL wikipedia , lookup

Árbol binario de búsqueda wikipedia , lookup

Treap wikipedia , lookup

Árbol binario wikipedia , lookup

Recorrido de árboles wikipedia , lookup

Transcript
ALGORITMOS Y ESTRUCTURAS DE DATOS II
Ingeniería Técnica en Informática de Gestión
Ingeniería Técnica en Informática de Sistemas
Ejercicios del Tema 3
Estructuras jerárquicas: Árboles
Árboles n-arios
1. Escribe un método para la clase árbol (árbol n-ario), que devuelva el número de nodos
que forman el árbol.
2. Escribe un método para la clase árbol (árbol n-ario), que calcule el grado del árbol. El
grado de un árbol es el máximo de los grados de sus nodos.
3. Escribe un método para la clase árbol (árbol n-ario), que devuelva en forma de lista el
resultado del recorrido en anchura del árbol.
4. Escribe una función que, dado un árbol n-ario, devuelva el número de hojas de dicho
árbol.
5. Escribe una función booleano que dados dos árboles generales determine si tienen la
misma estructura. Por ejemplo, los árboles generales que siguen tienen la misma
estructura, aunque, como puede observarse, no coincidan los valores que se almacenan
en los nodos.
t
q
b
w
k
s
f
f
g
v
g
q
ñ
k
6. Suponemos una implementación del árbol n-ario como la estudiada en clase. Aunque
en un principio la referencia al siguiente hermano estaría a nulo en el último hijo,
podemos aprovecharla para apuntar al padre. Añadimos un campo extra (booleano) a
cada nodo para indicar si existen más hermanos. Construye una clase que únicamente
contenga el código del método padre. Dado un elemento, dicho método devuelve, el
árbol n-ario que tiene como raíz al padre del nodo que contiene el elemento que se pasa
como parámetro. Puedes suponer que el elemento se encuentra en el árbol.
a
F
a
b
c
d
b nil
V
c nil
V
d nil
F
Árboles binarios
7. Escribe una función que dados dos árboles binarios A y B, determine si son idénticos o
no.
8. Escribe una acción que dado un árbol binario A, obtenga una copia B del mismo.
9. Escribe una acción que dado un árbol binario A, realice una copia simétrica B del
mismo.
10. Escribe una acción que visualice los nodos que están en el nivel n de un árbol binario.
11. Escribe una función que devuelva el número de hojas de un árbol binario.
12. Escribe una función que dado un árbol binario devuelva verdadero si el árbol es
completo y falso en otro caso.
13. Escribe una función que indique si un árbol binario es un árbol de búsqueda.
14. Dado los recorridos, en forma de cadena de caracteres, preorden e inorden de un árbol
binario, implementa un método que reconstruya el árbol binario.
15. Se define por frontera de un árbol binario, la secuencia formada por los elementos
almacenados en las hojas de un árbol binario, tomados de izquierda a derecha. Escribe
una acción que, dados un árbol binario y una lista vacía pasados como parámetros,
devuelva en dicha lista la frontera del árbol.
16. Escribe una función booleana que, dados un árbol binario y un camino expresado en
forma de lista, determine si existe dicho camino en el árbol, teniendo en cuenta que el
camino debe comenzar necesariamente en la raíz. Por ejemplo, para el árbol que sigue
existen los caminos m-q-t y m-d, pero no existen los caminos r-q-t ni d-k.
m
q
s
d
t
k
17. Cada nodo de un árbol binario A almacena una letra alfabética. La concatenación de
las mismas, en cada camino que va desde la raíz a una hoja representa una palabra.
Realizar una acción que visualice todas las palabras almacenadas en un árbol binario
A.
Árboles binarios de búsqueda (ABB)
18. Realizar las siguientes operaciones sobre árboles binarios de búsqueda:
función igualForma (A, B: arbin): boolean
Esta función devuelve Verdad si los árboles A y B tienen la misma forma en cuanto a
distribución de nodos se refiere, y Falso en caso contrario
acción dosComunes (A, B: arbin; cont: entero; var sn: booleano)
Esta acción devuelve Verdad en la variable sn si los árboles A y B tienen al menos 2
nodos con la misma clave, y Falso en caso contrario. El parámetro cont sirve para
llevar el control del número de nodos comunes
función suma (A: arbin): entero;
calcula la suma de los elementos del árbol A
función equilibrado (A: arbin): booleano;
devuelve verdad si el árbol A está equilibrado y falso en caso contrario.
Suponer que se dispone del método altura que devuelve la altura
de un árbol. Suponer también que el árbol vacío está equilibrado
Árboles binarios de búsqueda equilibrados (AVL)
19. Muestra el resultado de insertar 20, 16, 44, 57, 93, 32, 65, 19, 8 y 17 en un árbol AVL
inicialmente vacío.
20. Dibuja el árbol AVL que resulta a partir de la siguiente entrada de datos: 35, 18, 9, 58,
14, 49, 51, 67, 60.
21. Dibuja el árbol AVL que resulta a partir de la siguiente entrada de datos: 24, 14, 6, 35,
59, 17, 21, 32, 4, 7, 15, 22.
22. Dibuja el árbol AVL que resulta de realizar las siguientes inserciones: 13, 7, 21, 15, 27,
18, 4, 11, 30. A continuación elimina los elementos: 13, 4, 15.
23. Partiendo del siguiente árbol AVL, realizar las operaciones que se detallan, marcando
para cada nodo su factor de equilibrio en cada momento. En caso de producirse
desequilibrio, indicar la causa y explicar con detalle qué operación se ha utilizado para
resolverlo. Inserciones: 120, 45, 48 y 30. Eliminaciones: 40, 50 y 80
50
20
10
80
40
99
24. Realizar en lenguaje algorítmico la acción:
accion equilibrio_AVL (var a:arbin; var sol: booleano);
Esta acción toma como entrada el puntero al nodo raíz de un árbol binario y calcula el
equilibrio de cada uno de sus nodos, de forma que devuelve el puntero al nodo raíz del
árbol binario con sus equilibrios actualizados, así como la variable booleana sol que
devuelve si dicho árbol es o no AVL.
Notas
- Se puede hacer uso del método Altura que devuelve la altura de un árbol binario.
- Debido a las propiedades de la recursividad, puede ser necesario utilizar otras acciones
auxiliares para realizar todas las operaciones que se piden.
Árboles B
25. Dibuja el árbol B de orden 5 que resulta después de insertar al árbol B de la figura los
datos siguientes: 60, 3, 12, 23, 51, 80, 14, 59, 15, 9, 13, 1
25
7
2
5
6
19
10 12 16
47
20 21 22
24
31 43
44
76
50 52 60 69
26. Dibuja el árbol B de orden 5 que resulta a partir de la siguiente entrada de datos: C, S,
D, T, A, M, P, I, B, W, N, G, U, R, K, E, H, O, L, J
27. Dibuja el árbol B de orden 5 que resulta de realizar las siguientes inserciones: 1, 7, 6, 2,
11, 4, 8, 13, 10, 5, 19, 9, 18, 24, 3, 12, 14, 20 y 21. A continuación elimina los
elementos: 8, 10 y 6
28. Dibuja el árbol B de orden 3, inicialmente vacío, que resulta de realizar las siguientes
inserciones: 6, 21, 39, 12, 33, 15, 35, 7, 26, 18, 22, 5, 1, 8
84
98