Skip to content

Commit 5dc6ae6

Browse files
committed
[Feature] Level-Order traversal for naive trees.
1 parent df8d4a1 commit 5dc6ae6

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ $ coverage report -m
4646
* [In-Order Traversal](structures/naive_tree.py)
4747
* [Pre-Order Traversal](structures/naive_tree.py)
4848
* [Post-Order Traversal](structures/naive_tree.py)
49+
* [Level-Order Traversal](structures/naive_tree.py)
4950
* [Binary Search Tree](structures/binary_search_tree.py)
5051
* [Hash Map](structures/hash_map.py)
5152
* [DJB2 Hash Function](structures/hash_map.py)

structures/naive_tree.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from collections import deque
2+
13
class NaiveBinaryTree():
24

35
def __init__(self):
@@ -40,3 +42,19 @@ def recur(node):
4042
output.append(node.value)
4143
recur(self.head)
4244
return output
45+
46+
def level_order_traversal(self):
47+
output = []
48+
queue = deque([self.head])
49+
50+
while queue:
51+
output.extend(list(map(lambda n: n.value, list(queue))))
52+
next_level = deque()
53+
while queue:
54+
current = queue.popleft()
55+
if current.left:
56+
next_level.append(current.left)
57+
if current.right:
58+
next_level.append(current.right)
59+
queue = next_level
60+
return output

tests/test_tree.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@ def test_post_order_traversal(self):
6363

6464
self.assertEqual([17,8,3,2,6,12], tree.post_order_traversal())
6565

66+
def test_level_oreder_traversal(self):
67+
68+
tree = self.make_simple_tree()
69+
70+
self.assertEqual([3, 5, 7], tree.level_order_traversal())
71+
72+
tree = self.make_complex_tree()
73+
74+
self.assertEqual([12,3,6,8,2,17], tree.level_order_traversal())
75+
6676
def test_print(self):
6777

6878
tree = self.make_simple_tree()

0 commit comments

Comments
 (0)