2. Un árbol es un tipo abstracto de
datos ampliamente usado que imita
la estructura jerárquica de un árbol, con un
valor en la raíz y subárboles con un nodo
padre, representado como un conjunto
de nodos enlazados.
Los árboles son, sin duda, una de las
estructuras de datos no lineales, empleadas
en informática, tanto para resolver
problemas de hardware como de software.
Los árboles de directorios son organizaciones
bastante empleadas por cualquier usuario o
programador de una computadora.
3. Los árboles son estructuras de datos muy
similares a las listas doblemente enlazadas,
en el sentido que tienen punteros que
apuntan a otros elementos, pero no tienen
una estructura lógica de tipo lineal o
secuencial como aquellas, sino ramificada.
Tienen aspecto de árbol, de ahí su nombre.
Su estudio desde el punto de vista
matemático pertenece a la teoría de grafos;
desde el punto de vista informático
son estructuras de datos, lo que significa
que cada elemento, denominado nodo u
hoja, contiene un valor.
4. Raíz: El nodo superior de un árbol.
Hijo: Un nodo conectado directamente con otro
cuando se aleja de la raíz.
Padre: La noción inversa de hijo.
Hermanos: Un conjunto de nodos con el mismo
padre.
Descendiente: Un nodo accesible por descenso
repetido de padre a hijo.
Ancestro: Un nodo accesible por ascenso
repetido de hijo a padre.
Hoja: Un nodo sin hijos.
Nodo interno: Un nodo con al menos un hijo.
5. Grado: Número de subárboles de un nodo.
Brazo: La conexión entre un nodo y otro.
Camino: Una secuencia de nodos y brazos conectados con
un nodo descendiente.
Nivel: El nivel de un nodo se define por 1 + (el número de
conexiones entre el nodo y la raíz).
Altura de un nodo: La altura de un nodo es el número de
aristas en el camino más largo entre ese nodo y una hoja.
Altura de un árbol: La altura de un árbol es la altura de su
nodo raíz.
Profundidad: La profundidad de un nodo es el número de
aristas desde la raíz del árbol hasta un nodo.
Bosque: Un bosque es un conjunto de árboles n ≥ 0
disjuntos.
Rama: Una ruta del nodo raíz a cualquier otro nodo.
6.
7. Se define un camino en un árbol como
cualquier secuencia de nodos del árbol, n 1
… n p, que cumpla que cada nodo es padre
del siguiente en la secuencia (es decir, que ni
es el padre de ni+1). La longitud del camino
se define como el número de nodos de la
secuencia menos uno (p-1).
8. Los descendientes de un nodo ( c en el
diagrama) son aquellos nodos accesibles por
un camino que comience en el nodo.
9. Los ascendientes de un nodo ( f en el
diagrama) son los nodos del camino que va
desde la raíz a él.
10. Se define la altura de un nodo en un árbol
como la longitud del camino más largo que
comienza en el nodo y termina en
una hoja.La altura de un nodo hoja es cero
(0). La altura de un nodo es igual a la
mayor altura de sus hijos + 1.
La altura de un árbol se define como la
altura de la raíz.
11. La altura de un árbol determina la eficiencia
de la mayoría de operaciones definidas sobre
árboles.
12. Profundidad
Se define la profundidad de un nodo en un
árbol como la longitud del camino (único)
que comienza en la raíz y termina en el
nodo. También se denomina nivel.
La profundidad de la raíz es 0
La profundidad de un nodo es igual a la
profundidad de su padre + 1
13. Preorden: Se pasa por la raíz y luego se
recorre en preorden cada uno de los
subárboles. Recursivo.
Postorden: Se recorre en postorden cada uno
de los subárboles y luego se pasa por la raíz.
Recursivo.
Inorden: Se recorre en inorden el primer
subárbol (si existe). Se pasa por la raíz y por
último se recorre en inorden cada uno de los
subárboles restantes. Tiene sentido
fundamentalmente en árboles binarios.
Recursivo.
14. Por Niveles: Se etiquetan los nodos según su
profundidad (nivel). Se recorren ordenados
de menor a mayor nivel, a igualdad de nivel
se recorren de izquierda a derecha.No
recursivo: Se introduce el raíz en una cola y
se entra en un bucle en el que se extrae de
la cola un nodo, se recorre su elemento y se
insertan sus hijos en la cola.
15. Un árbol binario es o bien vacío o consta de
una raíz, un hijo árbol binario izquierdo y
otro derecho. Los árboles binarios de
búsqueda permiten inserciones y acceso a los
elementos en tiempo logarítmico. Los árboles
binarios llamados colas con prioridad
soportan acceso y eliminación del mínimo de
una colección de elementos.
16. Nuevamente se tiene casi el mismo concepto
de operaciones de las que se disponía con las
listas enlazadas:
Añadir o insertar elementos a un árbol.
Buscar o localizar elementos dentro del
árbol.
Borrar elementos creados en el árbol.
Moverse a través del árbol por cada uno de
sus ramas.
Recorrer el árbol completo.
17. Operación “buscar”
public boolean buscar(Object o) { if
(o.equals(valor)) return true; else if
(o.compareTo(valor)<0) return
buscar(getIzq(),o); else return
buscar(getDer(),o); }
18. Operación “insertar”
public NodoBinario insertar(Comparable o){ if
(o.compareTo(valor)<0)
setIzq(insertar(getIzq(),o)); else
setDer(insertar(getDer(),o)); return this; }
19. Operación “recorrer”
Los recorridos pueden ser en preorden,
postorden o inorden (orden simétrico). Todos
son O(N).
public void preOrder(SList aList) {
aList.addElement(value);
left.preOrder(aList); right.preOrder(aList); }
21. Operación “borrado”
El nodo a borrar debe ser reemplazado por el nodo
más a la derecha en el subárbol izquierdo o el nodo
más a la izquierda en el subárbol derecho (el nodo
más a la derecha del subárbol izquierdo será mayor o
igual que cualquier otro nodo de ese subárbol y
menor que todos los del subárbol derecho, y el nodo
más a la izquierda del subárbol derecho será menor
que todos los demás nodos de ese subárbol y mayor
que todos los del subárbol izquierdo).
Los algoritmos de inserción y borrado dependen en
gran medida del tipo de árbol que se esté
implementando, de modo que por ahora se dejarán a
un lado y se centrará la atención en el modo de
recorrer los árboles.
22. La eficiencia de las operaciones depende
exclusivamente de la altura del árbol. Para un
árbol de N nodos perfectamente equilibrado el
coste de acceso es de orden logarítmico: O(log
N). Sin embargo, se dice que si el árbol crece o
decrece descontroladamente, el rendimiento
puede disminuir considerablemente, siendo para
el caso más desfavorable (insertar un conjunto
de claves ordenadas en forma ascendente o
descendente) el coste de acceso: O(N). En un
árbol binario perfectamente equilibrado, el
número de nodos en el subárbol izquierdo y el
número de nodos en el subárbol derecho,
difieren como mucho en una unidad, y los
subárboles son también equilibrados
23. Representar un dato jerárquicamente
Almacenar un dato de tal modo que
su búsqueda sea eficiente (ver búsqueda en
árboles binarios y recorrido de árboles)
Representar listas ordenadas de datos
Como un flujo de trabajo para
la composición de imágenes digitales
Algoritmos de encaminamiento