Python 广度优先
来源:互联网 发布:日本2016进出口数据 编辑:程序博客网 时间:2024/05/29 05:02
class Graph:
def __init__(self,nodes):
self.nodes=nodes #nodes is a list
self.visited={}
def dfs(self,start):
stack=[]
stack.append(start)
self.visited[start]=True
print start.value
while stack:
tmp_node=stack[-1]
n=self.has_unvisited_nodes(tmp_node)
if n!=False:
print n.value
self.visited[n]=True
stack.append(n)
else:
nn=stack.pop()
print str(nn.value)+" no unvisited neighbors!"
def bfs(self,start):
queue=[]
queue.append(start)
self.visited[start]=True
print start.value
while queue:
tmp_node=queue.pop(0)
if self.has_unvisited_nodes(tmp_node):
for n in tmp_node.neighbors:
if self.visited.get(n,False)==False:
queue.append(n)
self.visited[n]=True
print n.value
else: print str(tmp_node.value)+" no unvisited neighbors!"
def has_unvisited_nodes(self,node):
for n in node.neighbors:
if self.visited.get(n,False)==False: return n
return False
class Node:
def __init__(self,value):
self.value=value
self.neighbors=[]
def connect(self,node):
self.neighbors.append(node)
return self.neighbors
n1=Node(1)
n2=Node(2)
n3=Node(3)
n4=Node(4)
n1.connect(n2);n1.connect(n3)
n2.connect(n3);n2.connect(n4)
n4.connect(n3)
G=Graph([])
G.bfs(n1)
def __init__(self,nodes):
self.nodes=nodes #nodes is a list
self.visited={}
def dfs(self,start):
stack=[]
stack.append(start)
self.visited[start]=True
print start.value
while stack:
tmp_node=stack[-1]
n=self.has_unvisited_nodes(tmp_node)
if n!=False:
print n.value
self.visited[n]=True
stack.append(n)
else:
nn=stack.pop()
print str(nn.value)+" no unvisited neighbors!"
def bfs(self,start):
queue=[]
queue.append(start)
self.visited[start]=True
print start.value
while queue:
tmp_node=queue.pop(0)
if self.has_unvisited_nodes(tmp_node):
for n in tmp_node.neighbors:
if self.visited.get(n,False)==False:
queue.append(n)
self.visited[n]=True
print n.value
else: print str(tmp_node.value)+" no unvisited neighbors!"
def has_unvisited_nodes(self,node):
for n in node.neighbors:
if self.visited.get(n,False)==False: return n
return False
class Node:
def __init__(self,value):
self.value=value
self.neighbors=[]
def connect(self,node):
self.neighbors.append(node)
return self.neighbors
n1=Node(1)
n2=Node(2)
n3=Node(3)
n4=Node(4)
n1.connect(n2);n1.connect(n3)
n2.connect(n3);n2.connect(n4)
n4.connect(n3)
G=Graph([])
G.bfs(n1)
0 0
- Python 广度优先
- python -- 广度优先搜索
- 图的广度优先搜索--python实现
- python自然语言处理-广度优先搜索
- python 图的遍历-深度优先和广度优先
- python 图 遍历-深度优先和广度优先 II
- python数据结构之图深度优先和广度优先
- python数据结构之图深度优先和广度优先
- 【Python】类的多重继承 、深度优先、广度优先
- python深度优先与广度优先的遍历算法比较
- 广度优先
- 广度优先
- 广度优先
- python新式类多重继承 广度优先搜索 C3算法
- Python广度优先搜索得到两点间最短路径
- 深度优先与广度优先
- 深度优先还是广度优先
- 深度优先和广度优先
- 【老罗笔记】阅览又半年(历史部分)
- 理解 Objective-C 的 ARC
- mysql5.6中binlog-row-image=minimal
- SN与TI,LS、HC与HCT的区别
- cdxgbfcthn
- Python 广度优先
- httpclient模拟浏览器访问网站
- MyEclipse更改jsp默认编码
- 1047. Student List for Course
- IOS使用Reachability实时检测网络连接状况
- 【数学规律】-ZOJ-3629-Treasure Hunt IV
- Android---wifi资料搜集
- obj-c编程05:类的多态与id动态绑定
- 盤點系統程式修改