PYTHON数据结构图实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Python图的实现

#!/usr/bin/python

#coding=utf-8

from collections import deque

class photo():

def__init__(self):

self.node_n={}

def add_nodes(self,nodelist):

for i in nodelist:

self.add_node(i)

def add_node(self,node):

if not node in self.nodes():

self.node_n[node]=[]

def add_edge(self,edge):

u,v=edge

if(v not in self.node_n[u])and(u not in self.node_n[v]): self.node_n[u].append(v)

if u!=v:

self.node_n[v].append(u)

def nodes(self):

return self.node_n.keys()

def deep(self,root=None):

self.visited={}

order=[]

def dfs(node):

self.visited[node]=True

order.append(node)

for i in self.node_n[node]:

if not i in self.visited:

dfs(i)

if root:

dfs(root)

for node in self.nodes():

if not node in self.visited:

dfs(node)

print"娣卞害锛?,order

return order

def wide(self,root=None):

self.visited={}

d=deque([])

order=[]

def bfs():

while len(d)>0:

node=d.popleft()

self.visited[node]=True

for i in self.node_n[node]:

if not i in d and not i in self.visited:

bfs()

if root:

d.append(root)

order.append(root)

bfs()

for i in self.nodes():

if i not in self.visited:

d.append(i)

order.append(i)

bfs()

print"骞垮害锛?,order

return order

if__name__=="__main__":

p=photo()

p.add_nodes([i+1for i in range(9)])

p.add_edge((1,2))

p.add_edge((1,3))

p.add_edge((2,4))

p.add_edge((2,5))

p.add_edge((4,8))

p.add_edge((5,8))

p.add_edge((3,6))

p.add_edge((3,7))

p.add_edge((6,7))

print p.nodes()

p.wide(1)

p.deep(1)

相关文档
最新文档