Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
Thought Process
Solution
from collections import deque
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if root is None:
return []
result = []
queue = deque()
queue.append(root)
while queue:
currentLevel = []
levelSize = len(queue)
for _ in range(levelSize):
currentNode = queue.popleft()
currentLevel.append(currentNode.val)
if currentNode.left:
queue.append(currentNode.left)
if currentNode.right:
queue.append(currentNode.right)
result.append(currentLevel)
return result
#Time: O(n) where n is the total number of nodes in tree
#Space: O(n) because of return list and queue