Академический Документы
Профессиональный Документы
Культура Документы
Qué es un árbol
Un árbol se define como una colección de nodos donde cada uno además de almacenar
información, guarda las direcciones de sus sucesores.
Los árboles representan las estructuras no-lineales y dinámicas de datos más importantes en
computación.
Dinámicas, puesto que la estructura árbol puede cambiar durante la ejecución de un programa.
No- lineales puesto que a cada elemento del árbol pueden seguirle varios elementos.
Nodo nuevo;
nuevo.info = info;
nuevo.izq = null;
nuevo.der = null;
if (raiz == null)
raiz = nuevo;
else
reco = raiz;
anterior = reco;
reco = reco.izq;
else
reco = reco.der;
anterior.izq = nuevo;
else
anterior.der = nuevo;
Creamos un nodo y disponemos los punteros izq y der a null, guardamos la información que llega
al método en el nodo.
Si el árbol está vacío, apuntamos raíz al nodo creado; en caso de no estar vacío, dentro de una
estructura repetitiva vamos comparando info con la información del nodo, si info es mayor a la del
nodo descendemos por el subárbol derecho en caso contrario descendemos por el subárbol
izquierdo.
Cuando se encuentra un subárbol vacío insertar el nodo en dicho subárbol. Para esto llevamos un
puntero anterior dentro del while.
if (reco != null)
imprimirPre (reco.izq);
imprimirPre (reco.der);
imprimirPre (raiz);
System.out.println();
}
El método imprimirPre(), es decir el no recursivo se encarga de llamar al método recursivo
pasando la dirección del nodo raiz.
El método recursivo void imprimirPre (Nodo reco) lo primero que verifica con un if si reco está
apuntando a un nodo (esto es verdad si reco es distinto a null), en caso afirmativo ingresa al
bloque del if y realiza:
- Visitar la raiz.
La visita en este caso es la impresión de la información del nodo y los recorridos son las llamadas
recursivas pasando las direcciones de los subárboles izquierdo y derecho.
Los algoritmos de los recorridos en entreorden y postorden son similares. La diferencia es que la
visita la realizamos entre las llamadas recursivas en el recorrido en entre orden:
if (reco != null)
imprimirEntre (reco.izq);
imprimirEntre (reco.der);
y por último en el recorrido en postorden la visita la realizamos luego de las dos llamadas
recursivas:
if (reco != null)
imprimirPost (reco.izq);
imprimirPost (reco.der);
}
}
Métodos
Operaciones:
CREAR ARBOL
AGREGAR
BUSCAR
IMPRIMIR
BORRAR
De las estructuras de datos de tipo Árbol, la especie más utilizada esel Árbol Binario de Búsqueda.
Los principales tipos de árboles binariosde búsqueda son los AVL, B* y balanceado.Los árboles
binarios de búsqueda se utilizan para localizar en formarápida un elemento almacenado en ese
árbol, a partir de una clave.Son una forma de implementar arreglos asociativos o mapas, endonde
se almacenan elementos que son pares <clave, valor>.En las bases de datos relacionales, para
poder localizar en formarápida un registro de una taba a partir de una clave, se utilizanobjetos
asociados a las tablas llamados índices. Estos índices sonárboles binarios de búsqueda
almacenados en el disco, que a partirde una clave indican dónde se encuentra el registro
correspondienteen la tabla.Otro ejemplo de la utilización de árboles binarios de búsqueda sonlos
diccionarios. A partir de una palabra, se realiza una búsqueda enel árbol para saber si está incluida
en el conjunto, y si existe, seobtienen sus datos asociados (por ejemplo, si es un verbo,
unsustantivo, un artículo, etc.).En Teoría de Compiladores, durante la fase de análisis del
códigofuente, los analizadores léxico, sintáctico y semántico utilizan tablasde símbolos, en donde
se almacenan las palabras clave y laspalabras reservadas y sus atributos, implementadas (por lo
general)como árboles binarios de búsqueda.En síntesis, se utiliza un árbol binario de búsqueda
cuando se deseaalmacenar en una estructura de datos cierta información, a la cualluego se desea
acceder en forma rápida a partir de una clave.