Estructuras de datos · Árboles

Árboles

Organizar datos en jerarquías: un nodo ya no tiene un solo camino hacia adelante, puede tener varios.

Árbol binario Árbol de búsqueda
→← usa las flechas, o desliza para avanzar
Antes de empezar: recursividad

Una función que se llama a sí misma

Una función es recursiva cuando se resuelve llamándose a sí misma con una versión más chica del mismo problema, hasta llegar a un caso base tan simple que ya no necesita llamarse de nuevo.

llamada 1
llamada 2
llamada 3
caso base

como una muñeca rusa: cada caja abre una más chica, hasta llegar a la que ya no tiene nada adentro

Recursividad · Ejemplo

Ejemplo: factorial(n)

factorial(n) = n × factorial(n − 1), hasta llegar al caso base: factorial(0) = 1.

PasoQué pasa
factorial(3)llama a factorial(2)
factorial(2)llama a factorial(1)
factorial(1)llama a factorial(0)
factorial(0)= 1 (caso base, no llama a nadie más)
factorial(1)= 1 × 1 = 1
factorial(2)= 2 × 1 = 2
factorial(3)= 3 × 2 = 6

las llamadas que esperan su turno se van apilando — igual que una pila (LIFO): la última en entrar es la primera en resolverse

Motivación

De una fila a una jerarquía

Hasta ahora, cada nodo tenía un solo camino hacia adelante. En un árbol, un nodo puede tener varios hijos al mismo tiempo.

Lista enlazada

Un solo camino. Cada nodo lleva únicamente al siguiente, en línea recta.

Árbol

Se puede ramificar. Un nodo lleva a varios nodos distintos, formando niveles.

Vocabulario básico

Las piezas de un árbol

Un árbol se arma con relaciones de padres e hijos.

raíz
A
B
padre e hijo
C
hoja
D
hoja
Idea base

El nodo ahora tiene dos caminos

Cada nodo guarda un valor y dos referencias: al hijo izquierdo y al hijo derecho.

← izquierdo
valor
derecho →
si un lado no tiene hijo, esa referencia queda en NULL
Árbol binario

Máximo dos hijos por nodo

Un nodo puede tener 0, 1 o 2 hijos — nunca más de dos. Por eso se llama binario.

2 hijos
A
B
1 hijo
C
0 hijos
D
0 hijos
Árbol binario de búsqueda

Todo menor a la izquierda, todo mayor a la derecha

Esa única regla, aplicada en cada nodo, es lo que hace que buscar en un árbol de búsqueda sea mucho más rápido que en una lista.

<
>
8
3
10
1
6
14
Árbol de búsqueda · Insertar

Insertar paso a paso

Vamos a insertar el valor 5 en el árbol de la diapositiva anterior.

ComparaciónDecisión
5 vs. 8 (raíz)5 < 8 → ir a la izquierda
5 vs. 35 > 3 → ir a la derecha
5 vs. 65 < 6 → ir a la izquierda
6 no tiene hijo izquierdolugar vacío se inserta el 5 ahí
Árbol de búsqueda · Resultado

Así queda el árbol después de insertar el 5

El 5 quedó como hijo izquierdo del 6, tal como lo fuimos decidiendo paso a paso.

8
3
10
1
6
14
5
Recorridos

Tres formas de visitar todos los nodos

"Recorrer" un árbol es pasar por todos sus nodos, uno por uno. El orden en que visitas izquierda, nodo y derecha define el recorrido. Vamos a ver los tres, uno a la vez, con el mismo árbol de antes (sin el 5).

Recorridos · In-order

In-order: izquierda → nodo → derecha

En cada nodo, primero se visita todo el subárbol izquierdo, después el nodo, y al final el subárbol derecho. El número en cada nodo es el orden en que se visita.

8
4
3
2
10
5
1
1
6
3
14
6
1, 3, 6, 8, 10, 14

dato curioso: en un árbol de búsqueda, el in-order siempre da los valores ordenados

Recorridos · Pre-order

Pre-order: nodo → izquierda → derecha

En cada nodo, primero se visita el propio nodo, después todo el subárbol izquierdo, y al final el subárbol derecho.

8
1
3
2
10
5
1
3
6
4
14
6
8, 3, 1, 6, 10, 14
Recorridos · Post-order

Post-order: izquierda → derecha → nodo

En cada nodo, primero se visita todo el subárbol izquierdo, después el subárbol derecho, y al final el propio nodo.

8
6
3
3
10
5
1
1
6
2
14
4
1, 6, 3, 14, 10, 8
Comparación

¿Por qué usar un árbol?

Lista enlazadaÁrbol de búsqueda
Buscar un valorRevisar uno por uno, desde el inicioDescartar la mitad restante en cada paso
EstructuraLineal, en filaJerárquica, por niveles
Ideal paraMantener un orden de llegadaBúsquedas rápidas sobre datos ordenados
Resumen

Para recordar

01

Árbol: nodos organizados en niveles, con relaciones de padres e hijos.

02

Árbol binario: cada nodo tiene como máximo dos hijos, izquierdo y derecho.

03

Árbol de búsqueda: los menores van a la izquierda y los mayores a la derecha — esa regla acelera las búsquedas.

04

Recorridos: in-order, pre-order y post-order visitan los mismos nodos, pero en distinto orden.