亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

python3.x - 關于Python圖遍歷的操作

瀏覽:132日期:2022-06-28 11:59:58

問題描述

就是創建了一個圖 想要進行深度遍歷 和 廣度遍歷 但是第二個遍歷的時候只會出現一個data 感覺是因為自己之前的那個遍歷把 self.visited[node] = True 的緣故 但是又不知道怎么進行修改,求各位指教

以下是代碼:

class Graph(object): def __init__(self, *args, **kwargs):self.node_neighbors = {}self.visited = {} def add_nodes(self,nodelist):for node in nodelist: self.add_node(node) def add_node(self,node):if node not in self.nodes(): self.node_neighbors[node] = [] def add_edge(self,edge):u, v = edgeif(v not in self.node_neighbors[u]) and (u not in self.node_neighbors[v]): self.node_neighbors[u].append(u) if(u!=v):self.node_neighbors[v].append(u) def nodes(self):return self.node_neighbors.keys() def depth_first_search(self, root=None):order = []def dfs(node): self.visited[node] = True order.append(node) for n in self.node_neighbors[node]:if not n in self.visited: dfs(n)if root: dfs(root)for node in self.nodes(): if not node in self.visited:dfs(node)print(order)return order def breadtg_frist_search(self, root = None):queue = []order = []def bfs(): while len(queue) > 0:node = queue.pop()self.visited[node] = Truefor n in self.node_neighbors[node]: if (not n in self.visited) and (not n in queue):queue.append(n)order.append(n)if root: queue.append(root) order.append(root) bfs()for node in self.nodes(): if not node in self.visited:queue.append(node)order.append(node)bfs()print(order)return orderif __name__ == ’__main__’: g = Graph()g.add_nodes([i+1 for i in range(10)])g.add_edge((1, 2))g.add_edge((1, 3))g.add_edge((2, 4))g.add_edge((2, 5))g.add_edge((4, 8))g.add_edge((5, 8))g.add_edge((5, 9))g.add_edge((3, 6))g.add_edge((3, 7))g.add_edge((7, 10))g.add_edge((9, 10))print(’nodes:’, g.nodes())order = g.depth_first_search(1)order = g.breadtg_frist_search(1)

然后遍歷出來的結果是

nodes: dict_keys([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])[1, 2, 3, 4, 5, 6, 7, 8, 9, 10][1]

問題解答

回答1:

樓主,是self.visited的問題,第一次深度搜索調用self.visted時,已經把所有節點變為true,第二次廣度搜索使用第一次深度搜索結果, 改為如下即可:

class Graph(object): def __init__(self, *args, **kwargs):self.node_neighbors = {}#self.visited = {} # 刪除此行 ... def depth_first_search(self, root=None):self.visited = {} # 添加此行... def breadtg_frist_search(self, root = None):self.visited = {} # 添加此行...

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美成人免费夜夜黄啪啪 | 99视频在线国产 | 日本成人在线看 | 色偷偷亚洲女人天堂观看欧 | 18lxxlxx日本 | 免费在线视频成人 | 国产亚洲福利一区二区免费看 | 国产91丝袜在线播放九色 | 国产va免费精品高清在线观看 | 国产高清精品久久久久久久 | 久久久美女视频 | 亚洲欧美日韩国产精品久久 | 手机看片午夜 | 成人怡红院视频在线观看 | 欧美一级看片免费观看视频在线 | 久久精品国产99国产精品亚洲 | 100000免费啪啪18免进 | 亚洲美女视频一区二区三区 | 一级作爱视频免费观看 | a级日韩乱理伦片在线观看 a级特黄毛片免费观看 | 日韩精品中文字幕一区二区三区 | 日韩三级免费观看 | 草草视频在线播放 | 美女黄视频在线观看 | 久久久久久一品道精品免费看 | 国产日韩欧美一区 | 在线免费一区 | 国产午夜精品免费一二区 | 免费观看成人久久网免费观看 | 偷拍小视频99在线 | 亚洲国产精品成人综合久久久 | 在线观看不卡一区 | 亚洲免费一级视频 | 国产精品高清视亚洲一区二区 | 亚洲成在人 | 免费播放欧美毛片欧美aaaaa | 韩国自拍偷自拍亚洲精品 | 成年人在线视频网站 | 亚洲aⅴ | 亚洲精品美女在线观看 | 国产成人a一区二区 |