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 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.dfs(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 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.dfs(n1)