Estructura de datos: Árboles
Árboles
-Terminología
Un árbol se puede definir como una estructura jerárquica y en forma no lineal, aplicada sobre una colección de elementos u objetos llamados nodos. El árbol es una estructura de datos muy importante en informática y en ciencias de la computación. Los árboles son estructuras no lineales, al contrario que los arrays y las listas enlazadas que constituyen estructuras lineales.
-Características
En relación con otros nodos:
Nodos. Se le llama nodo a cada elemento que contiene el árbol.
Nodo padre. Se utiliza este término para llamar a todos aquellos nodos que tienen al menos un hijo.
Nodo hijo. Los hijos son todos aquellos nodos que tienen un padre.
Nodo hermano. Los nodos hermanos son aquellos nodos que comparten un mismo padre en común dentro de la estructura.
En relación a su posición:
Nodo Raíz. Se refiere al primer nodo de un árbol, Solo un nodo del árbol puede ser la raíz.
Nodo Hoja. Son todos aquellos nodos que no tienen hijos, los cuales siempre se encuentran en los extremos de la estructura.
Nodo Interior o Rama. Estos son todos aquellos nodos que no son la raíz y que además tiene al menos un hijo.
En relación al tamaño del árbol:
Nivel. El nivel de un nodo es su distancia a la raíz.
Por lo tanto:
◦ Un árbol vacío tiene 0 niveles
◦ El nivel de la raíz es 1
◦ El nivel de cada nodo se calculado contando cuantos nodos existen sobre él, hasta llegar a la raíz + 1, y de forma inversa también se podría, contar cuantos nodos existen desde la raíz hasta el nodo buscado + 1. Altura. Se le llama altura al número máximo de niveles de un árbol.
Árboles binarios
Un árbol binario es un árbol en el que ningún nodo puede tener más de dos subárboles. En un árbol binario, cada nodo puede tener, cero, uno o dos hijos (subárboles).
Se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho. árbol binario es una estructura recursiva.
Cada nodo es el raíz de su propio subárbol y tiene hijos, que son raíces de árboles llamados los subárboles derecho e izquierdo del nodo, respectivamente. Un árbol binario se divide en tres subconjuntos disjuntos:
Equilibrio
La distancia de un nodo al raíz determina la eficiencia con la que puede ser localizado. Por ejemplo, dado cualquier nodo de un árbol, a sus hijos se puede acceder siguiendo sólo un camino de bifurcación o de ramas, el que conduce al nodo deseado.
De modo similar, los nodos a nivel 2 de un árbol sólo pueden ser accedidos siguiendo sólo dos ramas del árbol. La característica anterior nos conduce a una característica muy importante de un árbol binario, su balance o equilibrio. Para determinar si un árbol está equilibrado, se calcula su factor de equilibrio. El factor de equilibrio de un árbol binario es la diferencia en altura entre los subárboles derecho e izquierdo.
Árboles completos
Un árbol binario es una estructura de datos de tipo árbol en donde cada uno de los nodos del árbol puede tener 0, 1, ó 2 sub árboles llamados de acuerdo a su caso como:
1. Si el nodo raíz tiene 0 relaciones, se llama hoja.
2. Si el nodo raíz tiene 1 relación a la izquierda, el segundo elemento de la relación es el subárbol izquierdo.
3. Si el nodo raíz tiene 1 relación a la derecha, el segundo elemento de la relación es el subárbol derecho.
Estructura de un árbol binario
Un árbol binario se construye con nodos. Cada nodo debe contener el campo dato (datos a almacenar) y dos campos de enlace (apuntador), uno al subárbol izquierdo (izquierdo, izdo) y otro al subárbol derecho (derecho, dcho).
El valor NULL indica un árbol o un subárbol vacío.
Ejemplo;
Se puede observar que los nodos de un árbol binario que son hojas se caracterizan por tener sus dos campos de enlace a NULL.
Representación de un nodo
La clase Nodo agrupa a todos los atributos de que consta: dato, izdo (rama izquierda) y dcho (rama derecha). Además, dispone de dos costructores, el primero inicializa el campo dato a un valor y los enlaces a NULL, en definitiva, se inicializa como hoja. El segundo, inicializa dato a un valor y las ramas a dos subárboles. Se incluyen, además, las funciones miembro de acceso y modificación de cada uno de sus atributos.
Creación de un árbol binario
Árbol de expresión
la expresión es una secuencia de tokens (componentes léxicos siguiendo las reglas establecidas).
Un árbol de expresión es un árbol binario con las siguientes propiedades:
Los árboles binarios se utilizan para representar expresiones en la memoria; En realidad, no aparecen en el árbol, pero están implícitos en su forma, y esto es muy interesante para evaluación de la expresión.
Los árboles de expresiones se utilizan en las computadoras para evaluar expresiones usadas en El algoritmo más sencillo para construir un árbol de expresión es aquél que lee una expresión completa que contiene paréntesis en la misma. (a * c) + (e / g) - (b + d) Los operadores que siguen en orden de prioridad son + y -, que se evalúan de izquierda a derecha. Por consiguiente, se puede escribir:((a * c) + (e / g)) - (b + d)Por último, la expresión completa entre paréntesis será:(((a * c) + (e / g)) - (b + d))
Recorrido de un arbol BINARIO
Recorrido en preorden :En este tipo de recorrido: 1-Primero se visita el nodo raíz. 2-Luego se recorre el subárbol izquierdo. 3-finalmente, se recorre el subárbol derecho.
Recorrido en orden :En este tipo de recorrido: 1-Primero se recorre el subárbol izquierdo. 2-Luego se visita el nodo raiz. 3-Finalmente, se recorre el subárbol derecho.
Recorrido en postorden: En este tipo de recorrido: 1-Primero se recorre el subárbol izquierdo. 2-Luego se recorre el subárbol derecho 3-Finalmente, se visita el nodo raíz.
Operaciones en Arboles binarios de búsqueda
DISEÑO RECURSIVO DE UN ÁRBOL DE BÚSQUEDA
En un árbol binario de búsqueda cada nodo tiene dos enlaces que apuntan a sus subárboles izquierdo y derecho, respectivamente. por lo que para declarar la clase ArbolBusqueda es necesario tener previamente definida la clase Nodo, ya que la raíz del árbol es un puntero a un objeto de tipo Nodo. Por lo tanto, se debe definir primero la clase Nodo antes de la clase ArbolBusqueda.
.png)
.png)
.png)
.png)
.png)
.png)
.png)
Comentarios
Publicar un comentario