1+ '''
2+ Given the root of a binary tree, return the level order traversal of its nodes' values. (i.e., from left to right, level by level)
3+
4+ Example:
5+ Input: root = [3,9,20,null,null,15,7]
6+ Output: [[3],[9,20],[15,7]]
7+ '''
8+ 9+ 10+ # Definition for a binary tree node.
11+ # class TreeNode:
12+ # def __init__(self, val=0, left=None, right=None):
13+ # self.val = val
14+ # self.left = left
15+ # self.right = right
16+ 17+ 18+ class Solution :
19+ def levelOrder (self , root : Optional [TreeNode ]) -> List [List [int ]]:
20+ # Recursive Solution
21+ # Time: O(n); Space: O(n)
22+ result = []
23+ if root is None :
24+ return result
25+ 26+ def traverse (node , level ):
27+ if node is None :
28+ return
29+ if len (result ) == level :
30+ result .append ([])
31+ 32+ result [level ].append (node .val )
33+ 34+ traverse (node .left , level + 1 )
35+ traverse (node .right , level + 1 )
36+ 37+ traverse (root , 0 )
38+ return result
39+ 40+ 41+ class Solution :
42+ def levelOrder (self , root : Optional [TreeNode ]) -> List [List [int ]]:
43+ # Iterative Solution
44+ # Time: O(n); Space: O(n)
45+ result = [] # final result
46+ if root is None : return result
47+ queue = [] # for level order traversal
48+ queue .append (root )
49+ while (len (queue ) > 0 ):
50+ size = len (queue )
51+ currLevel = []
52+ while (size > 0 ):
53+ size -= 1
54+ curr = queue .pop (0 )
55+ currLevel .append (curr .val )
56+ if curr .left is not None :
57+ queue .append (curr .left )
58+ if curr .right is not None :
59+ queue .append (curr .right )
60+ result .append (currLevel )
61+ return result
62+
0 commit comments