вы на a
, поэтому ваш ряд равен 010100
, а ваши соседи - b
, d
. поэтому поместите их в стек (и вы посетили a
):
[d b] {a}
pop d
, добавьте его к набору посещенных узлов и зайдите туда - 111000
(a
, b
, c
) (но вы посетили a
):
[c b b] {a d}
pop c
, добавьте его в набор посещенных узлов и зайдите туда - 010110
(b
, d
, e
) (но мы посетили d
):
[e b b b] {a d c}
pop e
, добавьте его в набор посещенных узлов и зайдите туда - 001001
(c
, f
) (но мы посетили c
):
[f b b b] {a d c e}
pop f
, добавьте его в набор посещенных узлов и зайдите туда - 000010
(e
) (но мы уже побывали там):
[b b b] {a d c e f}
pop b
, добавьте его к набору посещенных узлов и зайдите туда - 101100
(a
, c
, d
) (но мы посетили все это):
[b b] {a d c e f b}
и мы посетили b, так что поп и выбросить дважды.
[] {a d c e f b}
ps это DFS и поэтому это стек, а не очередь (вы упомянули оба в вопросе). для BFS это было бы похоже, но вы добавляете в очередь, поэтому первые несколько шагов будут:
[d b] {a}
[b b c] {a d}
, где b
и c
добавляются справа "вместо" слева "(но мы все равно выбираем слева, поэтому мы исследуем в ширину, и следующий узел будет b
) .