Skip to content

Commit 6728320

Browse files
committed
added level order traversal questions
1 parent 5ead07e commit 6728320

3 files changed

Lines changed: 73 additions & 0 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from collections import deque
2+
3+
def level_order_traversal(root):
4+
if not root:
5+
return []
6+
7+
result = []
8+
queue = deque([root])
9+
while queue:
10+
level_size, data = len(queue), []
11+
for _ in range(level_size):
12+
curr_node = queue.popleft()
13+
data.append(curr_node.val)
14+
if curr_node.left:
15+
queue.append(curr_node.left)
16+
if curr_node.right:
17+
queue.append(curr_node.right)
18+
19+
result.append(data)
20+
21+
return result
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from collections import deque
2+
3+
def zigzag_level_order(root):
4+
result = []
5+
if not root:
6+
return result
7+
8+
queue = deque([root])
9+
left_to_right = True
10+
11+
while queue:
12+
level_size, data = len(queue), deque()
13+
for _ in range(level_size):
14+
curr_node = queue.popleft()
15+
16+
if left_to_right:
17+
data.append(curr_node.val)
18+
else:
19+
data.appendleft(curr_node.val)
20+
21+
if curr_node.left:
22+
queue.append(curr_node.left)
23+
if curr_node.right:
24+
queue.append(curr_node.right)
25+
26+
result.append(data)
27+
left_to_right = not left_to_right
28+
29+
return result
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from collections import deque
2+
3+
def level_order_bottom(root):
4+
if not root:
5+
return []
6+
7+
result = deque()
8+
queue = deque([root])
9+
while queue:
10+
level_size, level_data = len(queue), []
11+
for _ in range(level_size):
12+
curr_node = queue.popleft()
13+
level_data.append(curr_node.val)
14+
15+
if curr_node.left:
16+
queue.append(curr_node.left)
17+
18+
if curr_node.right:
19+
queue.append(curr_node.right)
20+
21+
result.appendleft(level_data)
22+
23+
return result

0 commit comments

Comments
 (0)