Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]实现树的层序遍历~代码如下~
class Solution:
# @param root, a tree node
# @return a list of lists of integers
def levelOrder(self, root):
if root is None: return []
self.res = []
self.helper(root, 0)
return self.res
def helper(self, root, level):
if root is None: return
if len(self.res) < level + 1:
self.res.append([root.val])
else:
self.res[level].append(root.val)
if root.left:
self.helper(root.left, level + 1)
if root.right:
self.helper(root.right, level + 1)
还有一种解法~代码如下
class Solution:
# @param root, a tree node
# @return a list of lists of integers
def levelOrder(self, root):
if root is None: return []
cur, res = [root], []
while cur:
next, vals = [], []
for node in cur:
vals.append(node.val)
if node.left:
next.append(node.left)
if node.right:
next.append(node.right)
res.append(vals)
cur = next
return res