Comprendiendo la organización jerárquica de la información en programación.
Un árbol genérico es una estructura de datos no lineal utilizada para organizar información de forma jerárquica. A diferencia de otras estructuras como listas o arreglos, los árboles permiten representar relaciones padre-hijo de forma natural. Cada nodo puede contener múltiples hijos, lo que brinda una enorme flexibilidad para modelar estructuras reales como sistemas de archivos, páginas web, organigramas, videojuegos y documentos HTML.
Un sistema operativo organiza sus carpetas utilizando estructuras similares a árboles genéricos. Cada carpeta puede contener archivos o más carpetas internas.
Documentos │ ├── Cursos │ ├── IoT │ └── Web │ ├── Fotos │ ├── Viajes │ └── Familia │ └── Música
| Característica | Árbol Genérico | Árbol Binario |
|---|---|---|
| Hijos | Ilimitados | Máximo 2 |
| Flexibilidad | Alta | Media |
| Uso | DOM, XML, Carpetas | Búsquedas |
En Python podemos representar un árbol genérico utilizando clases y listas dinámicas. Cada nodo almacenará un dato y una colección de hijos.
class Nodo:
def __init__(self, dato):
self.dato = dato
self.hijos = []
def agregar_hijo(self, hijo):
self.hijos.append(hijo)
# Crear raíz
raiz = Nodo('Documentos')
# Crear nodos principales
cursos = Nodo('Cursos')
fotos = Nodo('Fotos')
musica = Nodo('Musica')
# Agregar hijos a la raíz
raiz.agregar_hijo(cursos)
raiz.agregar_hijo(fotos)
raiz.agregar_hijo(musica)
# Agregar subcarpetas
cursos.agregar_hijo(Nodo('IoT'))
cursos.agregar_hijo(Nodo('Web'))
fotos.agregar_hijo(Nodo('Viajes'))
fotos.agregar_hijo(Nodo('Familia'))
print('Árbol creado correctamente')
El recorrido Preorden visita primero el nodo actual y luego continúa recorriendo todos sus hijos. Este recorrido es ampliamente utilizado en compiladores, procesamiento de documentos HTML y motores de videojuegos.
def recorrer(nodo):
print(nodo.dato)
for hijo in nodo.hijos:
recorrer(hijo)
# Ejecutar recorrido
recorrer(raiz)
# Salida esperada:
# Documentos
# Cursos
# IoT
# Web
# Fotos
# Viajes
# Familia
# Musica
El DOM (Document Object Model) es la representación estructurada que realiza el navegador sobre un documento HTML. Internamente, cada etiqueta HTML se convierte en un nodo dentro de un árbol genérico. Gracias a esto, JavaScript puede navegar, modificar y manipular dinámicamente cada elemento de la página web.
El siguiente código HTML será interpretado por el navegador y convertido automáticamente en un árbol DOM.
Hola Mundo
Texto
html
└── body
├── h1
└── div
└── p
Cada elemento HTML se convierte en un nodo dentro del árbol DOM.
// Seleccionar el título principal
const titulo = document.querySelector('h1');
// Modificar texto
titulo.innerText = 'Nuevo Título';
// Cambiar color
titulo.style.color = 'cyan';
// Crear nuevo elemento
const nuevoParrafo = document.createElement('p');
nuevoParrafo.innerText = 'Elemento agregado dinámicamente';
// Agregar elemento al body
document.body.appendChild(nuevoParrafo);
Los árboles genéricos son una de las estructuras de datos más importantes en ciencias de la computación. Su capacidad para representar jerarquías los convierte en la base de múltiples tecnologías modernas.