def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
self.res = []
self.dfs(root, 0)
return self.res
def dfs(self, root, level):
if not root: return
if len(self.res) <= level: self.res.append([])
self.res[level].append(root.val)
if root.left: self.dfs(root.left, level + 1)
if root.right: self.dfs(root.right, level + 1)
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
if not root: return []
res, q = [], [root]
while q:
cur, nextLevel = [], []
for node in q:
cur.append(node.val)
if node.left: nextLevel.append(node.left)
if node.right: nextLevel.append(node.right)
res.append(cur)
q = nextLevel
return res