1. INSTITUTO UNIVERSITARIO DE TECNOLOGÍA
“ANTONIO JOSÉ DE SUCRE”
EXTENSIÓN MARACAY
Arboles
PROCESAMIENTO DE DATOS
PROF. NAUDY DEL VALLE ALBORNOZ
ALUMNO:
NOEL GALINDEZ
C.I. Nº V- 28.142.273
INFORMÁTICA
MARACAY, FEBRERO 2024
2. DEFINICIÓN INSTRUCTIVA Y FORMAL DE LA ESTRUCTURA DE
ÁRBOL
Un árbol es una estructura de datos jerárquica y no lineal compuesta por nodos
conectados mediante aristas. Está compuesto por un nodo raíz que no tiene ningún nodo
padre, y cada nodo puede tener cero o más nodos hijos. Los nodos que no tienen hijos
se llaman nodos hoja. Cada nodo en un árbol tiene un único nodo padre, excepto el
nodo raíz que no tiene ninguno. Un árbol se utiliza para representar relaciones
jerárquicas entre elementos.
En ciencias de la computación y en informática, un árbol es un tipo abstracto de
datos (TAD) 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.
Una estructura de datos de árbol se puede definir de forma recursiva (localmente)
como una colección de nodos (a partir de un nodo raíz), donde cada nodo es una
estructura de datos con un valor, junto con una lista de referencias a los nodos (los
hijos), con la condición de que ninguna referencia esté duplicada ni que ningún nodo
apunte a la raíz.
Alternativamente, un árbol se puede definir de manera abstracta en su conjunto
como un árbol ordenado, con un valor asignado a cada nodo. Ambas perspectivas son
útiles: mientras que un árbol puede ser analizado matemáticamente, realmente es
representado como una estructura de datos en la que se trabaja con cada nodo por
separado (en lugar de como una lista de nodos y una lista de adyacencia entre nodos,
como un grafo). Mirando a un árbol como conjunto, se puede hablar del nodo padre de
un nodo dado, pero en general se habla de una estructura de datos de un nodo dado que
sólo contiene la lista de sus hijos sin referencia a su padre (si lo hay).
3. CONCEPTO DE ÁRBOL BINARIO. EJEMPLOS
Un árbol binario es un tipo especial de árbol en el que cada nodo puede tener
como máximo dos nodos hijos, comúnmente conocidos como hijo izquierdo e hijo
derecho. Los nodos en un árbol binario se organizan de tal manera que para cada nodo,
el hijo izquierdo es menor (o igual) que el nodo actual, y el hijo derecho es mayor (o
igual) que el nodo actual. Esto se conoce como la propiedad de ordenación de un árbol
binario.
Esta estructura se caracteriza por que cada nodo solo puede tener máximo 2 hijos,
dicho de otra manera, es un árbol grado dos.
Por ejemplo: los árboles binarios a) y b) de la figura 1(adoptamos el convenio de
que los hijos a la izquierda son extraídos extendiéndonos hacia la izquierda y los hijos
a la derecha a la derecha) son diferentes, puesto que difieren en el nodo 5. El árbol c
por convenio se supone igual al b) y no al a).
4. RECORRIDO DEL ÁRBOL BINARIO: OPERACIONES CON ÁRBOL
BINARIO
Un recorrido en un árbol binario es Una operación que consiste en visitar todos
sus vértices o nodos, de tal manera que cada vértice se visite una sola vez. Se distinguen
tres tipos de recorrido: INORDEN, POSORDEN Y PREORDEN. En cada recorrido se
tiene en cuenta la posición de la raíz (de ahí su nombre) y que siempre se debe ejecutar
primero el hijo izquierdo y luego el derecho.
Recorrido en Preorden
Recorrer un árbol en preorden consiste en primer lugar, examinar el dato del
nodo raíz, posteriormente se recorrer el subárbol izquierdo en preorden y finalmente
se recorre el subárbol derecho en preorden. Esto significa que para cada subárbol se
debe conservar el recorrido en preorden, primero la raíz, luego la parte izquierda y
posteriormente la parte derecha.
Veamos cómo se realiza el recorrido paso a paso según la gráfica del árbol de la
imagen 3:
5. El recorrido inicia con el subárbol izquierdo, el primer nodo a visitar es la raíz
que es el nodo 10, luego se visita el subárbol izquierdo con el nodo 5, posteriormente
el 3, luego el nodo 1, sigue con el nodo 4, pasamos al nodo 7 y luego el 9.
Continuamos con el recorrido del subárbol derecho en preorden, con la visita del
nodo 15, luego el 14, se continúa con el 17, se visita el 16 y se finaliza con la visita
del nodo 20.
El resultado completo del recorrido en preorden para el árbol de la imagen es: 10
– 5 – 3 – 1 – 4 – 7 – 9 – 15 – 14 – 17 -16 – 20, Tal como se muestra en la imagen 3.
Recorrido en Inorden
Recorrer un árbol en Inorden consiste en primer lugar en recorrer el subárbol
izquierdo en Inorden, luego se examina el dato del nodo raíz, y finalmente se recorre
el subárbol derecho en Inorden. Esto significa que para cada subárbol se debe
conservar el recorrido en Inorden, es decir, primero se visita la parte izquierda, luego
la raíz y posteriormente la parte derecha.
Veamos cómo se realiza el recorrido paso a paso según la gráfica del árbol de la
imagen 4:
El recorrido inicia con el subárbol izquierdo, el primer nodo a visitar es el 3
luego se visita el 5 y posteriormente el 7, con esto se garantiza que el recorrido del
subárbol izquierdo se hizo en Inorden.
Finalizado el recorrido del subárbol izquierdo se visita el nodo de la raíz, que
para este caso es el número 10.
6. Solo queda recorrer el subárbol derecho en Inorden, es decir se visita el 11 luego
el 12 y se finaliza con la visita del nodo 15
El resultado completo del recorrido en Inorden para el árbol de la imagen es:3 –
5 – 7 – 10 – 11 – 12 – 15, Tal como se muestra en la imagen.
Recorrido en Postorden
Recorrer un árbol en Postorden consiste en primer lugar en recorrer el subárbol
izquierdo en Postorden, luego se recorre el subárbol derecho en Postorden y finalmente
se visita el nodo raíz. Esto significa que para cada subárbol se debe conservar el
recorrido en Postorden, es decir, primero se visita la parte izquierda, luego la parte
derecha y por último la raíz.
Veamos cómo se realiza el recorrido paso a paso según la gráfica del árbol de la
imagen 5.
El recorrido inicia con el subárbol izquierdo, el primer nodo a visitar es el 3
luego se visita el 7 y posteriormente el 5 que es la raíz, con esto se garantiza que el
recorrido del subárbol izquierdo se hizo en Postorden.
Finalizado el recorrido del subárbol izquierdo se inicia la visita al subárbol
derecho en Postorden, es decir, se visita el 11 luego el 15 y se finaliza con la visita del
nodo 12 que sería la raíz de este subárbol.
Solo queda recorrer la raíz del árbol que para este caso es el número 10.
El resultado completo del recorrido en Postorden para el árbol de la imagen es:
3 – 7 – 5 – 11 – 15 – 12 – 10 Tal como se muestra en la imagen.
7. Las operaciones más comunes que se realizan en un árbol binario incluyen:
✓ Inserción: Agregar un nuevo nodo al árbol.
✓ Búsqueda: Encontrar un nodo específico en el árbol.
✓ Eliminación: Eliminar un nodo específico del árbol.
✓ Recorridos: Traversar el árbol para visitar todos los nodos en un orden
específico (por ejemplo, inorder, preorder, postorder).
✓ Altura del árbol: Calcular la altura del árbol (la longitud del camino más largo
desde el nodo raíz hasta una hoja).
✓ Balanceo del árbol: Asegurar que el árbol esté equilibrado para garantizar un
tiempo de búsqueda eficiente.
✓ Rotaciones: Realizar rotaciones simples o dobles para mantener el equilibrio
del árbol (principalmente aplicable a árboles de búsqueda balanceados como
AVL o árboles rojo-negro).
8.
9. BÚSQUEDA DE UN ELEMENTO DENTRO DE UNA ESTRUCTURA DE
ÁRBOL
La búsqueda de un elemento en un árbol binario implica comparar el elemento
con el nodo actual. Si el elemento es igual al nodo actual, se ha encontrado el elemento.
Si el elemento es menor que el nodo actual, se busca en el subárbol izquierdo. Si el
elemento es mayor que el nodo actual, se busca en el subárbol derecho. Este proceso
se repite recursivamente hasta encontrar el elemento o hasta llegar a un nodo nulo.
10. La búsqueda de un elemento dentro de una estructura de árbol, como un árbol
binario, es un proceso fundamental. Aquí tienes una función en Python para buscar un
elemento específico dentro de un árbol binario:
11. En este ejemplo, la función buscar recibe la raíz del árbol y el valor que se está
buscando. Si la raíz es None o el valor coincide con el valor en la raíz, el elemento se
ha encontrado y se devuelve la raíz. De lo contrario, se realiza una búsqueda recursiva
en el subárbol izquierdo si el valor es menor que el valor en la raíz, o en el subárbol
derecho si es mayor. Si el elemento no se encuentra en el árbol, la función devuelve
None.
ORDENAMIENTO
Un árbol binario de búsqueda se puede utilizar para ordenar elementos.
Insertando todos los elementos en el árbol binario y luego realizando un recorrido
inorder del árbol, los elementos se pueden recuperar en orden ascendente. El
ordenamiento de un árbol binario implica realizar un recorrido inorder del árbol.
Durante este recorrido, los nodos del árbol se visitan en un orden tal que los valores se
imprimen en orden ascendente.
En este código, primero se define la clase Nodo para representar los nodos del
árbol. Luego, se define la función insertar para insertar un nuevo valor en el árbol
binario. Después, se define la función recorrido_inorder para realizar el recorrido
inorder del árbol, imprimiendo los valores en orden ascendente. Finalmente, se crea un
árbol binario con una lista de números y se realiza el recorrido inorder para imprimir
los números ordenados.
Aquí tienes una implementación en Python para ordenar un árbol binario
utilizando un recorrido inorder:
12.
13. REALIZAR UN PROGRAMA PARA UTILIZAR ÁRBOLES. ( USAR
CUALQUIER LENGUAJE DE PROGRAMACIÓN)
A continuación, se presenta un ejemplo de un programa simple en Python que
utiliza un árbol binario para almacenar números enteros y luego realiza un recorrido
inorder para imprimir los elementos ordenados: