E N D
3. Tema 3: Árboles
4. Bibliografía
5. Objetivos Conozcan las estructuras de datos arbóreas y las formas de trabajar con ellas en la solución de problemas de mediana complejidad
6. Introducción Estructuras de datos estudiadas:
Listas lineales y sus variantes.
Las relaciones entre los nodos de información son lineales.
Todos los nodos tienen un único antecesor, excepto el primero que no tiene antecesor.
Todos los nodos tienen un único sucesor, excepto el último que no tiene sucesor.
7. Introducción ¿Qué estructura de datos se debe utilizar para representar estructuras jerárquicas o taxonómicas?
8. Definición de Árbol Un árbol (tree) es un T.D.A. que consta de un conjunto finito T de nodos y una relación R (paternidad) entre los nodos tal que:
9. Definición de Árbol Si n es un nodo y A1, A2, A3, A4, A5, …, Ak son árboles con raíces n1, n2, n3, n4,…, nk . Se puede construir un nuevo árbol haciendo que n se constituya en padre de los nodos n1, n2, n3, n4,…, nk.
En dicho árbol, n es la raíz y A1, A2, A3, A4, A5, …, Ak son los subárboles de la raíz.
Los nodos n1, n2, n3, n4,…, nk reciben el nombre de hijos del nodo n.
10. Aclaraciones Si el conjunto finito T de nodos del árbol es vacío, entonces se trata de un árbol vacío.
En esta estructura existe sólo un nodo sin padre, que es la raíz del árbol.
Todo nodo, a excepción del nodo raíz, tiene uno y sólo un padre.
Los subárboles de un nodo son llamados hijos.
11. Ejemplos
12. Aclaraciones Para todo nodo k, distinto de la raíz, existe una única secuencia de la forma:
k0, k1, k2, k3, ..., kn, donde k0=raíz y kn=k
Con n >= 1, donde.
ki es el sucesor de ki-1,
para 1 <= i <= n, o sea, cada nodo ki de la
secuencia es la raíz de otro subárbol.
13. Ejemplos
14. Otras definiciones
15. Ejemplos
16. Otras definiciones
17. Ejemplos
18. Otras definiciones
19. Ejemplos
20. Otras definiciones
21. Ejemplos
22. Otras definiciones
23. Ejemplos: Árbol genealógico de María (sin los hermanos)
24. Otras definiciones
25. Otras definiciones
26. Ejemplos
27. Definición de Árbol Binario
28. Ejemplo
29. Árbol Binario: Características
30. Recorridos de un Árbol Binario
31. Recorrido en Preorden
32. Recorrido en Preorden
33. Recorrido en Simétrico
34. Recorrido en Simétrico
35. Recorrido en Postorden
36. Recorrido en Simétrico
37. Árbol Binario: Implementación en C++
38. Árbol: Implementación en C++
39. Árboles de Búsqueda
40. Árboles Lexicográficos
41. Árboles Lexicográficos
42. Árboles Lexicográficos: Ejemplo
43. Problemas
44. Árboles Hilvanados
45. Árboles Hilvanados
46. Árbol Hilvanado
47. Árboles Hilvanados
48. Construyendo Árboles Hilvanados
49. Construyendo Árboles Hilvanados
50. Construyendo Árboles Hilvanados
51. Árbol Hilvanado: Implementación en C++
52. Árboles Balanceados
53. Árboles Balanceados
54. Árboles AVL
55. Árboles Generales ¿La estructura anterior se puede representar con un árbol binario?
56. Árboles Generales Son árboles cuyo grado es mayor que dos.
57. Árboles Generales
58. Árboles Generales
59. Transformación de General en Binario
60. Transformación de General en Binario
61. class TGBinTreeNode: public TBinTreeNode
{
public:
TGBinTreeNode(void* pInfo): TBinTreeNode(pInfo) {}
bool IsLeaf() {return !aLeft;}
int Degree();
}; Árbol General: Implementación en C++
62. int TGBinTreeNode::Degree()
{
int degree = 0;
TBinTreeNode* cursor = Left();
while (cursor)
{
degree++;
cursor = cursor->Right();
}
return degree;
} Árbol General: Implementación en C++
63. class TGBinTree: public TBinTree
{
public:
void* DeleteNode(TGBinTreeNode*);
TGBinTreeNode* GetFather(TGBinTreeNode*);
TGLinkedList* GetLeaves();
TGLinkedList* GetSons(TBinTreeNode*);
bool InsertNode(TGBinTreeNode*, TGBinTreeNode*);
}; Árbol General: Implementación en C++
64. Colocación Secuencial de árboles
65. Colocación Secuencial de Árboles
66. Colocación en Preorden Secuencial
67. Colocación en Preorden Secuencial
68. Colocación en Preorden Secuencial
69. Implementación en C++
70. Colocación en Orden Familiar
71. Colocación en Orden Familiar
72. Colocación en Orden Familiar
73. Implementación en C++
74. Colocación en Postorden Secuencial
75. Colocación en Postorden Secuencial
76. Colocación en Postorden Secuencial
77. Implementación en C++