graph = { 1: [2, 3], 2: [4] }
1
2
4
3
graph = { 1: [2, 3], 2: [4] }
>>> def walk_graph(tree, node): ... yield node ... if node in tree: ... for i in tree[node]: ... for j in walk_graph(tree, i): ... yield j ... >>> graph = { ... 1: [2, 3], ... 2: [4] ... } >>> >>> tuple(walk_graph(graph, 1)) (1, 2, 4, 3) >>>
>>> set(reduce(add,graph.values())+graph.keys()) set([1, 2, 3, 4])
doza_andВыводится не то. Во-первых, это множество, у которого нет порядка, а во-вторых, там нужно проходить в глубину (после двойки нужно выводить потомка двойки - четвёрку).
Вот это короче.set([1, 2, 3, 4])
py.user.nextГде это написано? Автор просил дать все вершины. Он их получил.
Выводится не то. ….. там нужно проходить в глубину
doza_andПрямо у него в первом сообщении.
Где это написано?
solo.test88
и нужно вывести вершины в консоли:
1
2
4
3
doza_andГрафы обычно выводятся вполне определённо, поэтому было бы странным выводить просто какое-то неупорядоченное множество вершин. Мало того, у ориентированного графа есть понятие корня, поэтому ты не можешь просто начать выводить его весь с любой вершины, так как из некоторых вершин могут быть недостижимы какие-то вершины, тогда как от корня достижима любая вершина.
Явного требования в спецификации нет.
graph = { 1: [2, 3], 2: [3, 4], 4: [1] }