Skip to content

Commit e81f53d

Browse files
committed
breadth first search
1 parent 940668e commit e81f53d

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

binary_tree_levelorder.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
class Queue:
2+
def __init__(self):
3+
self.items = []
4+
5+
def enqueue(self, data):
6+
self.items.append(data)
7+
8+
def dequeue(self):
9+
if len(self.items):
10+
return self.items.pop(0)
11+
12+
def peek(self):
13+
if len(self.items):
14+
return self.items[0].data
15+
16+
17+
class Node:
18+
def __init__(self, data):
19+
self.data = data
20+
self.left = None
21+
self.right = None
22+
23+
24+
class BinaryTree:
25+
def __init__(self, data):
26+
self.root = Node(data)
27+
28+
29+
def levelOrder(self, start):
30+
31+
queue = Queue()
32+
queue.enqueue(start)
33+
traversal = []
34+
35+
while len(queue.items) > 0:
36+
traversal.append(queue.peek())
37+
node = queue.dequeue()
38+
39+
if node.left is not None:
40+
queue.enqueue(node.left)
41+
42+
if node.right is not None:
43+
queue.enqueue(node.right)
44+
45+
return traversal
46+
47+
48+
49+
50+
tree = BinaryTree(3)
51+
tree.root.left = Node(4)
52+
tree.root.left.left = Node(6)
53+
tree.root.left.right = Node(7)
54+
tree.root.right = Node(5)
55+
tree.root.right.left = Node(8)
56+
tree.root.right.right = Node(9)
57+
print(tree.levelOrder(tree.root))

0 commit comments

Comments
 (0)