diff --git a/src/my_project/interviews/google_top_exercises/round_1/18_binary_tree_level_order_traversal.py b/src/my_project/interviews/google_top_exercises/round_1/18_binary_tree_level_order_traversal.py new file mode 100644 index 00000000..760f61f3 --- /dev/null +++ b/src/my_project/interviews/google_top_exercises/round_1/18_binary_tree_level_order_traversal.py @@ -0,0 +1,31 @@ +from typing import Optional, List +from collections import deque + +class TreeNode: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right + +class Solution: + def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: + + if not root: + return [] + + answer = list() + queue = deque([root]) + + while queue: + level_size = len(queue) + level = [] + for _ in range(level_size): + node = queue.popleft() + level.append(node.val) + if node.left: + queue.append(node.left) + if node.right: + queue.append(node.right) + answer.append(level) + + return answer