/*
Implementación recusriva DFS
https://g...content-available-to-author-only...b.com/orendon/01cf8cd0794f7869ce16d152c0131c79
A
/ \
B E
/ \ / \
C D F G
*/
visited = {} // para marcar los nodos que ya visitamos
adjacency_list = { // guardamos los "vecinos/hijos" de cada nodo
'A': ['B', 'E'],
'B': ['C', 'D'],
'C': [],
'D': [],
'E': ['F', 'G'],
'F': [],
'G': [],
}
function dfs(node){
console.log(node);
visited[node] = true;
for (const child of adjacency_list[node]) {
if (!visited[child]){
dfs(child);
}
};
}
dfs('A');
LyoKSW1wbGVtZW50YWNpw7NuIHJlY3Vzcml2YSBERlMKaHR0cHM6Ly9nLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5iLmNvbS9vcmVuZG9uLzAxY2Y4Y2QwNzk0Zjc4NjljZTE2ZDE1MmMwMTMxYzc5CgkJCSAgICAgQQoJCQkgIC8gICAgIFwKCQkJQiAgICAgICAgIEUKCQkgIC8gICBcICAgICAgLyAgXAoJCSBDICAgICBEICAgIEYgICAgRwoqLwoKdmlzaXRlZCA9IHt9CQkJCS8vIHBhcmEgbWFyY2FyIGxvcyBub2RvcyBxdWUgeWEgdmlzaXRhbW9zCmFkamFjZW5jeV9saXN0ID0gewkJCS8vIGd1YXJkYW1vcyBsb3MgInZlY2lub3MvaGlqb3MiIGRlIGNhZGEgbm9kbwoJJ0EnOiBbJ0InLCAnRSddLAoJJ0InOiBbJ0MnLCAnRCddLAoJJ0MnOiBbXSwKCSdEJzogW10sCgknRSc6IFsnRicsICdHJ10sCgknRic6IFtdLAoJJ0cnOiBbXSwKfQoKZnVuY3Rpb24gZGZzKG5vZGUpewoJY29uc29sZS5sb2cobm9kZSk7CgkKCXZpc2l0ZWRbbm9kZV0gPSB0cnVlOwoJZm9yIChjb25zdCBjaGlsZCBvZiBhZGphY2VuY3lfbGlzdFtub2RlXSkgewoJCWlmICghdmlzaXRlZFtjaGlsZF0pewoJCQlkZnMoY2hpbGQpOwoJCX0KCX07Cn0KCgpkZnMoJ0EnKTsK