¿Cómo puedo recorrer un árbol no dirigido usando Búsqueda en Profundidad o Búsqueda en Amplitud en JavaScript? En este artículo explicamos de forma práctica y concisa dos formas habituales de recorrer un árbol no dirigido: Búsqueda en Profundidad DFS y Búsqueda en Amplitud BFS, con ejemplos en JavaScript y recomendaciones para evitar problemas comunes en grafos no dirigidos.
Concepto básico: un árbol no dirigido es un grafo conectado acíclico. Al recorrerlo con DFS o BFS es importante evitar volver al nodo padre y controlar nodos visitados para prevenir ciclos en caso de que el grafo no sea estrictamente un árbol. En árboles la complejidad de ambos algoritmos es O(n) en tiempo y O(n) en memoria en el peor caso, donde n es el número de nodos.
Ejemplo sencillo de representación usando lista de adyacencia en JavaScript y DFS recursivo: const graph = [[1,2],[0,3],[0,3],[1,2]]; function dfs(node,parent,visited,graph){ visited[node]=true; for(let neigh of graph[node]) if(neigh!==parent) if(!visited[neigh]) dfs(neigh,node,visited,graph); } const visited = new Array(graph.length).fill(false); dfs(0,-1,visited,graph);
DFS iterativo con pila: function dfsIter(start,graph){ const visited = new Array(graph.length).fill(false); const stack = [[start,-1]]; while(stack.length){ const [node,parent] = stack.pop(); if(visited[node]) continue; visited[node]=true; for(let neigh of graph[node]) if(neigh!==parent && !visited[neigh]) stack.push([neigh,node]); } return visited; }
BFS usando cola para recorrido por capas: function bfs(start,graph){ const visited = new Array(graph.length).fill(false); const queue = [start]; visited[start]=true; while(queue.length){ const node = queue.shift(); for(let neigh of graph[node]) if(!visited[neigh]){ visited[neigh]=true; queue.push(neigh); } } return visited; }
Buenas prácticas: marcar nodos visitados en cuanto se extraen o se encolan, pasar el nodo padre en DFS en árboles no dirigidos para evitar retrocesos innecesarios, y preferir estructuras eficientes para la cola y la pila si el grafo es grande. En grafos generales donde existen ciclos, usar solo la marca visited es suficiente; en árboles basta con evitar visitar el padre.
En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones personalizadas que integran algoritmos y buenas prácticas de ingeniería. Si necesitas crear una aplicación que incluya recorridos de estructuras de datos, procesamiento en tiempo real o componentes de inteligencia artificial para optimizar búsquedas y análisis, podemos ayudarte con proyectos de software a medida y aplicaciones a medida adaptadas a tu negocio.
Además ofrecemos servicios avanzados de inteligencia artificial, agentes IA y automatización para empresas; si tu proyecto requiere integración con modelos, servicios cloud o pipelines de datos, consulta nuestras capacidades en inteligencia artificial. Trabajamos con servicios cloud aws y azure, ofrecemos ciberseguridad y pentesting, servicios inteligencia de negocio y soluciones con power bi para visualizar resultados y tomar decisiones basadas en datos.
Palabras clave integradas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Contacta con Q2BSTUDIO para diseñar e implementar recorridos eficientes en estructuras de datos, soluciones a medida y arquitecturas seguras y escalables.

.jpg)
.jpg)
.jpg)

.jpg)