Talk is cheap!!!
from treelib import Node,Tree
tree = Tree()
def bfs_tree(graph, start):
#根节点以start开始
visited = [start]
tree.create_node(start,start.lower())
for edge, nextNode in graph[start].items():
tree.create_node(nextNode, nextNode.lower(), parent=start.lower())
queue = [nextNode]
visited.append(nextNode)
while queue:
node = queue.pop(0)
visited.append(node)
for k, v in graph[node].items():
if v not in visited:
tree.create_node(v, v.lower(), parent=node.lower())
if v in list(graph.keys()):
queue.append(v)
else:
queue = []
else:
tree.create_node(v,v.upper(),parent=node.lower())
queue = []
tree.show()
return tree.paths_to_leaves()
if __name__ == '__main__':
print(bfs_tree(Graph,'A'))
结果:
A
├── B
│ ├── C
│ │ └── A
│ ├── D
│ └── E
└── Z
└── S
[['a', 'b', 'c', 'A'], ['a', 'z', 's'], ['a', 'b', 'e'], ['a', 'b', 'd']]