1. Code
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if root == None:
return []
ans = [[root.val]]
nodes = [root]
cnt = 0
parents = [[nodes[cnt]]]
while True:
children = []
vals = []
if len(parents) == cnt:
break
for parent in parents[cnt]:
if parent.left:
children.append(parent.left)
vals.append(parent.left.val)
if parent.right:
children.append(parent.right)
vals.append(parent.right.val)
if children == []:
return ans
parents.append(children)
ans.append(vals)
cnt += 1
2. Result
Runtime : 31 ms(96.47%), Memory usage : 14.1 MB(98.87%)
(Runtime can be different by a system even if it is a same code.)