stampare ogni livello a BFS
-
28-09-2019 - |
Domanda
Quindi, posso attraversare la lista, ma non può stampare ogni livello. Non so come fare.
ho qualcosa di simile a questo:
$list = {
"A" => ["C","D","E"],
"B" => ["C","F"],
"C" => ["A","B","D","F","E"],
"D" => ["A","C","E"],
"E" => ["A","C","D"],
"F" => ["B","C"]
}
def BFS2()
queue = ["A"]
visited = {"A"=>true}
print "A "
while(!queue.empty?)
node = queue.pop()
$list[node].each do |child|
if visited[child] != true then
print "#{child} "
queue.push(child)
visited[child] = true
end
end
end
end
invece di stamparlo come
A C D E B F
id come stamparlo come così
A
C D E
B F
Ho provato un paio di cose diverse, ma io non riesco a farlo. Qualsiasi aiuto sarebbe apprezzato, grazie.
Soluzione
La soluzione ha richiesto il controllo per vedere se si sarebbe in realtà stampato qualcosa per un determinato nodo in modo che non abbiamo aggiunto un \n
in più per i nodi che non avrebbe dovuto stampati nulla.
Soluzione
aggiungere il \n
appropriata è, se necessario.
def BFS2()
queue = ["A"]
visited = {"A"=>true}
puts "A "
while(!queue.empty?)
do_print = false
node = queue.pop()
$list[node].each do |child|
if visited[child] != true then
print "#{child} "
queue.push(child)
visited[child] = true
do_print = true
end
end
if do_print == true
print "\n "
end
end
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow