ÁRBOLES
Árboles
Definición
Los árboles son estructuras de datos no lineales, a diferencia
de los arreglos y listas que son estructuras de datos lineales.
Árboles
Aplicaciones
Para representar formulas algebraicas.
Algoritmos de cifrado y codificación.
Inteligencia artificial.
Árboles
Aplicaciones
En los sistemas operativos.
(almacenamiento de archivos)
Árboles
Aplicaciones
En el diseño de compiladores, procesadores de textos.
Árboles
Conceptos
Un árbol consta de un número finito de elementos,
denominados nodos y de un conjunto finito de líneas
dirigidas denominadas ramas, que conectan a los nodos.
Árboles
Conceptos
Grado: El número de ramas asociado con un nodo.
Padre: Si tiene nodos sucesores.
Hijo: Nodos sucesores o descendientes.
Hermanos: Dos o más nodos con el mismo padre.
Árboles
Conceptos
Hoja: Nodo que no tiene descendientes.
Nivel: El nivel de un nodo es su distancia al nodo raíz.
El nodo raíz tiene nivel 0.
Los hijos de la raíz tienen nivel 1 y sus hijos nivel 2 y
así sucesivamente.
Los hermanos están siempre en el mismo nivel, pero
no todos los nodos del mismo nivel son necesariamente hermanos.
Árboles
A
B E F
C D G H I
Padres:
Grado:
Hijos:
Nivel:
Hermanos:
Árboles
Conceptos
Camino: Es una secuencia de nodos en los que cada nodo es
adyacente al siguiente.
B E F
C D G H I
Árboles
Conceptos
Altura o profundidad: Es el nivel de la hoja del camino más largo más uno.
Árboles
Conceptos
Subárbol: Cualquier estructura conectada por debajo de la raíz, desde
el nodo y todos los descendientes de él.
• Un nodo simple es un subárbol.
• Cada nodo (descendencia) de un árbol es un subárbol.
Árboles binarios
Definición
Árbol binario: Es un árbol en el cada nodo no puede tener más de dos
subárboles.
• Cada nodo puede tener 0,1 o 2 hijos.
raíz
Árboles binarios
Conceptos
Balance o equilibrio: Para saber si un árbol binario esta en balance o
equilibrado necesitamos conocer su factor de equilibrio.
Factor de equilibrio: Es la diferencia en altura entre los subárboles
derecho e izquierdo.
Fe= AD -AI
Se encuentra en perfecto equilibrio si la diferencia es 0.
-1< 0 <1
Árboles binarios
Conceptos – factor de equilibrio
C D
E F
Árboles binarios de búsqueda
Definición
Árbol binario de búsqueda: Es un árbol en el que dado un nodo (raíz),
todos los datos del subárbol izquierdo son menores que el dato (raíz) y todos
los datos del subárbol derecho son mayores que el dato (raíz).
Datos Menores Datos Mayores
Árboles binarios de búsqueda
Operaciones
Insertar Nodo
Recorrer el Árbol
Borrar un Nodo
Buscar un Nodo
Árboles binarios de búsqueda
Nodo (ejemplo para un árbol)
typedef struct _Nodo
{
int dato;
_Nodo *izquierda;
_Nodo *derecha;
}Nodo;
Árboles binarios de búsqueda
Insertar un Nodo
Crear el nodo nuevo.
Necesitamos no perder la raíz
Recorrer el árbol hasta encontrar lugar en donde será insertado el nuevo nodo.
El nodo insertado se vuelve el nodo raíz. (Solo, sino hay nada en el árbol).
Árboles binarios de búsqueda
Crear e inicializar el Nodo
Nodo *crearNodo(int dato)
{
Nodo *nuevo;
nuevo =(Nodo *)malloc(sizeof(Nodo));
// Pedir DATO
nuevo->dato= dato;
nuevo->izquierda= NULL;
nuevo->derecha= NULL;
return nuevo;
}
Árboles binarios de búsqueda
Insertar un Nodo
Nodo *insertarNodo(Nodo *arbol)
{
Nodo *raiz,*nuevo;
raiz=arbol; else {
nuevo=crearNodo(dato); if(arbol->derecha != NULL)
if (arbol == NULL) arbol=arbol->derecha;
return nuevo; else {
else{ arbol->derecha=nuevo;
while (arbol != NULL){ return raiz;
if (nuevo->dato<= arbol->dato) }
if(arbol->izquierda != NULL)
arbol=arbol->izquierda; }
else { }
arbol->izquierda=nuevo; }
return raiz; }
}
Árboles binarios de búsqueda
Recorrer el árbol
Preorder: Visita raíz, recorre subárbol izquierdo, recorre subárbol derecho.
Inorder: Recorre subárbol izquierdo, visita raíz, recorre subárbol derecho.
Postorder: Recorre subárbol izquierdo, recorre subárbol derecho, visita raíz.
Árboles binarios de búsqueda
Recorrer el árbol
Preorder: Visita raíz, recorre subárbol izquierdo, recorre subárbol derecho.
Si esta vacío, regresar,
A sino
visitar raíz
B recorrido preorder del subárbol izquierdo
D recorrido preorder del subárbol derecho
C H
E
F G I J
Árboles binarios de búsqueda
Recorrer el árbol
Inorder: Recorre subárbol izquierdo, visita raíz, recorre subárbol derecho.
Si esta vacío, regresar,
A sino
recorrido inorder del subárbol izquierdo
B visitar raíz
D recorrido inorder del subárbol derecho
C H
E
F G I J
Árboles binarios de búsqueda
Recorrer el árbol
Postorder: Recorre subárbol izquierdo, recorre subárbol derecho, visita raíz.
Si esta vacío, regresar,
A sino
recorrido postorder del subárbol izquierdo
B recorrido postorder del subárbol derecho
D visitar raíz
C H
E
F G I J
Árboles binarios de búsqueda
Borrar un Nodo
1 El nodo a eliminar es una hoja.
2 El nodo a eliminar tiene un hijo.
3 El nodo a eliminar tiene dos hijos.
Árboles binarios de búsqueda
Borrar un Nodo
1 El nodo a eliminar es una hoja.
Árboles binarios de búsqueda
Borrar un Nodo
2 El nodo a eliminar tiene un hijo.
R N
N
Árboles binarios de búsqueda
Borrar un Nodo
3 El nodo a eliminar tiene dos hijos.
R
Árboles binarios de búsqueda
Borrar un Nodo
3 El nodo a eliminar tiene dos hijos.
Mover por la derecha
R
Árboles binarios de búsqueda
Borrar un Nodo
3 El nodo a eliminar tiene dos hijos.
Mover por la izquierda
R
Árboles binarios de búsqueda
Tarea
Investigar como borrar un nodo.
(Código)
Árboles binarios de búsqueda
Práctica