-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathromania_bfs.py
More file actions
72 lines (53 loc) · 1.38 KB
/
romania_bfs.py
File metadata and controls
72 lines (53 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
'''
'' Program to demonstrate BFS using Romania Roadmap
'' Date 09/14/2017
'' Author Zeeshan Hyder Bhat
'''
# Tree structure
class Tree:
def __init__(self, value, children=None):
self.value = value
self.children = children
def __str__(self):
return str(self.value)
# Fringe is basically the FIFO Queue
fringe = []
path = []
# BFS method
def BFS(tree, iter):
global fringe
global path
print(tree.value)
# path.append(tree.value)
# Goal State
if(tree.value == 'Bucharest'):
print("\n\n")
return;
if tree.children != None:
path.append(len(fringe))
fringe = fringe+tree.children
iter = iter+1
if iter == path[0]:
path.pop(0)
print("\n---------------\n")
if(iter == len(fringe)):
fringe = []
print("Tree exhausted")
return # tree exhausted
else:
BFS(fringe[iter],iter)
'''
'' Romania Road map in tree structure
'''
nodeBucharest = Tree("Bucharest")
nodeFagaras = Tree("Fagaras", [nodeBucharest])
nodeArad = Tree("Arad")
nodeSibiu = Tree("Sibiu",[nodeArad, nodeFagaras])
nodePitesti = Tree("Pitesti",[nodeBucharest])
nodeCraiova = Tree("Craiova",[nodePitesti])
nodeRV = Tree("Rimnicu Vilcea",[nodeCraiova, nodePitesti, nodeSibiu])
## Tree end
## fringe index pointer at the beginning
itr = -1
## start at first node which is RV
BFS(nodeRV,itr)