Contenido del curso
DFS
- 6

Cómo recorre nodos el algoritmo DFS
Viendo ahora - 7

Implementación de DFS recursivo para búsqueda en árboles
12:10 min - 8

Búsqueda en Profundidad (DFS) para Grafos: Enfoque Iterativo y Recursivo
01:27 min - 9

Inorder, Preorder y Postorder en árboles
07:09 min - 10

Suma de caminos raíz a hoja en árboles
02:04 min - 11

Suma de caminos raíz a hoja con DFS
07:31 min - 12

Playground: Sum Root to Leaf Numbers
- 13

Implementación de Algoritmo DFS en Árboles Binarios con Golang
15:03 min - 14

Número de islas con DFS en matrices
02:32 min - 15

Problema de islas resuelto con DFS
08:50 min - 16

Playground: Number of Islands
- 17

Número de islas con DFS recursivo en Python
10:18 min - 18

Ejercicios Prácticos de Búsqueda en Profundidad (DFS)
02:22 min - 19

Algoritmos de Búsqueda en Profundidad (DFS) en Problemas Comunes
06:19 min
BFS
- 20

Cómo BFS recorre grafos por niveles
02:05 min - 21

Implementación de BFS con colas en Python
08:42 min - 22

Mínimos movimientos del caballo en ajedrez
02:55 min - 23

Minimum Knight's Move con BFS
08:11 min - 24

Playground: Minimum Knights Moves
- 25

Resolución de Problemas de Caballos de Ajedrez con BFS en Python
17:49 min - 26

Propagación BFS en Rotting Oranges
03:50 min - 27

Resolución de Rotting Oranges usando BFS
08:43 min - 28

Playground: Rotting Oranges
- 29

Implementación de BFS para naranjas podridas
23:44 min - 30

Puente más corto entre islas con BFS
03:38 min - 31

Shortest Bridge: combina DFS y BFS
07:35 min - 32

Playground: Shortest Bridge Between Islands
- 33

Shortest Bridge con DFS y BFS en Python
14:57 min - 34

Búsqueda en anchura: Ejercicios prácticos y aplicaciones
03:41 min - 35

Ejercicios avanzados de búsqueda en anchura (BFS) en programación
08:47 min
Backtrack
- 36

Backtracking para encontrar soluciones válidas
04:20 min - 37

Combinaciones de letras en teclado telefónico
01:51 min - 38

Combinaciones de teclado con backtracking
09:19 min - 39

Generación de combinaciones de letras con teclados numéricos en C++
14:08 min - 40

Playground: Letter Combinations of a Phone Number
- 41

Generación de Direcciones IP Válidas a partir de Cadenas Numéricas
03:51 min - 42

Backtracking para generar IPs válidas
28:16 min - 43

Playground: Restore IP Addresses
- 44

Búsqueda de Palabras en Matrices: Solución y Complejidad
02:54 min - 45

Word Search con DFS y backtracking
08:30 min - 46

Playgrund: Word Search
- 47

Búsqueda de palabras en matrices con DFS
18:18 min - 48

Resolución del problema de las n reinas en ajedrez
01:08 min - 49

Ejercicios de Backtracking: Combinaciones y Permutaciones
01:05 min - 50

Combinaciones y Permutaciones con Backtracking
02:14 min
Próximos pasos
Cómo recorre nodos el algoritmo DFS
Resumen
El recorrido DFS (Depth First Search) o búsqueda por profundidad es una de las formas más usadas para visitar nodos en un grafo o árbol. Sirve cuando necesitas explorar un camino completo antes de regresar y probar otro, y es una pieza clave si estás aprendiendo estructuras de datos no lineales.
Cómo funciona el recorrido DFS en un árbol binario
Imagina un árbol binario con su raíz en la parte superior. En lugar de pintar primero el nodo de la izquierda y luego el de la derecha al mismo nivel, con DFS bajas hasta el último hijo posible por un camino, y solo cuando ya no puedes avanzar más, regresas para tomar otro camino [01:00].
Una analogía útil es pensar en agua cayendo por una llave. El agua entra por la raíz y empieza a llenar hacia abajo cada círculo del árbol, siguiendo la gravedad. No se distribuye en paralelo entre niveles, sino que profundiza primero por una rama hasta el fondo. Esa idea de profundizar es la esencia del algoritmo.
¿Qué es DFS en estructuras de datos? Es un algoritmo de recorrido que visita un nodo y luego prioriza a sus hijos antes que a sus hermanos del mismo nivel, hasta llegar al final de cada rama.
Por qué DFS también funciona en grafos, no solo en árboles
DFS no se limita a árboles. También aplica en grafos generales, donde no siempre existe una raíz única. Puedes tener varios nodos iniciales, nodos independientes o simplemente un nodo desde el cual decidiste comenzar tu recorrido.
Piensa en un grafo de ciudades conectadas por carreteras. Si partes de una ciudad y la siguiente es otra ciudad, con DFS recorres primero un camino completo hasta la última ciudad alcanzable, y solo después vuelves para iniciar otro camino. Es lo opuesto a avanzar dos caminos a la par.
Qué prioridad sigue DFS al elegir el siguiente nodo
La regla es clara: cuando estás en un nodo, en vez de mirar a sus hermanos del mismo nivel, le das prioridad a sus hijos. Y cada hijo repite la misma lógica con los suyos. Así se construye la profundidad del recorrido de forma natural y recursiva.
Cómo se relaciona DFS con la estructura de datos pila
El comportamiento de DFS es prácticamente idéntico al de una pila, esa estructura de datos donde lo último que entra es lo primero que sale (LIFO) [03:00]. El último nodo que revisaste es el que toma prioridad para seguir explorando, y sus hijos son los que acabas de ingresar a esa pila mental.
Por eso, cuando implementes DFS en código, te vas a apoyar en una pila, ya sea explícita o usando la pila de llamadas de la recursión. Los nodos viejos del mismo nivel quedan esperando hasta que termines de profundizar.
¿Por qué DFS usa una pila y no una cola? Porque DFS necesita atender primero el nodo más reciente para seguir bajando. Una cola haría lo contrario y recorrería por niveles.
Cuál es la complejidad temporal de DFS
La complejidad temporal de DFS se calcula como O(V + E), donde V es el número de nodos (vértices) y E es la cantidad de aristas o relaciones entre esos nodos [02:30]. Tiene sentido: visitas cada nodo una vez y revisas cada conexión también una vez.
Algunos puntos prácticos para tener presentes al usar DFS:
- Funciona en árboles binarios, árboles generales y grafos.
- Profundiza por una rama antes de explorar otras.
- Se apoya en una pila o en recursión.
- Su costo crece con nodos y aristas, no con niveles.
¿Cuándo conviene usar DFS? Cuando quieres explorar caminos completos, detectar ciclos, recorrer laberintos o resolver problemas donde la profundidad importa más que el orden por niveles.
Si ya entendiste la lógica detrás del recorrido, el siguiente paso es verlo en código y notar cómo la pila aparece de forma natural. Cuéntame en los comentarios qué problema te gustaría resolver con DFS.