Skip to content

Commit 16d0e61

Browse files
committed
Two Hundred - Thirty-Seven Commit: Implement levelorder() function
1 parent d587d28 commit 16d0e61

File tree

3 files changed

+73
-0
lines changed

3 files changed

+73
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
from queuelinkedlist import LinkedListQueue
2+
class _Node:
3+
__slots__ = '_element', '_left', '_right'
4+
5+
def __init__(self, element, left=None, right=None):
6+
self._element = element
7+
self._left = left
8+
self._right = right
9+
10+
11+
class BinaryTree:
12+
def __init__(self):
13+
self._root = None
14+
15+
def maketree(self, element, left, right):
16+
self._root = _Node(element, left._root, right._root)
17+
18+
# Preorder: RoLR
19+
# Inorder: LRoR
20+
# Postorder:LRRo
21+
def preorder(self, root):
22+
if root:
23+
print(root._element, end='-->')
24+
self.preorder(root._left)
25+
self.preorder(root._right)
26+
27+
def inorder(self, root):
28+
if root:
29+
self.inorder(root._left)
30+
print(root._element, end='-->')
31+
self.inorder(root._right)
32+
33+
def postorder(self, root):
34+
if root:
35+
self.postorder(root._left)
36+
self.postorder(root._right)
37+
print(root._element, end='-->')
38+
39+
def levelorder(self):
40+
Q = LinkedListQueue()
41+
t = self._root
42+
print(t._element, end=' ')
43+
Q.enqueue(t)
44+
while not Q.is_empty():
45+
t = Q.dequeue()
46+
if t._left:
47+
print(t._left._element, end=' ')
48+
Q.enqueue(t._left)
49+
if t._right:
50+
print(t._right._element, end=' ')
51+
Q.enqueue(t._right)
52+
53+
x = BinaryTree()
54+
y = BinaryTree()
55+
z = BinaryTree()
56+
a = BinaryTree()
57+
b = BinaryTree()
58+
c = BinaryTree()
59+
e = BinaryTree()
60+
x.maketree(40, e, e)
61+
y.maketree(20, x, e)
62+
z.maketree(60, e, e)
63+
a.maketree(50, e, z)
64+
b.maketree(30, a, e)
65+
c.maketree(10, y, b)
66+
print('Preorder Traversal')
67+
c.preorder(c._root)
68+
print('\nInorder Traversal')
69+
c.inorder(c._root)
70+
print('\nPostorder Traversal')
71+
c.postorder(c._root)
72+
print('\nLevel order Traversal')
73+
c.levelorder()

Section_7(Binary-Trees)/binary-tree-level-order-traversal.py

Whitespace-only changes.

0 commit comments

Comments
 (0)