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