描述:
给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)
首个数据为根节点,后面接着是其左儿子和右儿子节点值,
"#"表示不存在该子节点。
节点数量不超过20。
样例 1:
输入:
tree = {1,2,3}
输出:
[[1],[2,3]]
解释:
1
/ \
2 3
它将被序列化为{1,2,3}
样例 2:
输入:
tree = {1,#,2,3}
输出:
[[1],[2],[3]]
解释:
1
\
2
/
3
它将被序列化为{1,#,2,3}
挑战
挑战1:只使用一个队列去实现它
挑战2:用BFS算法来做
源代码:
用一个队列的方法。
from collections import deque
"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
"""
class Solution:
"""
@param root: The root of binary tree.
@return: Level order a list of lists of integer
"""
def levelOrder(self, root):
if root is None:
return []
queue = deque([root])
result = []
while queue:
level = []
for _ in range(len(queue)):
node = queue.popleft()
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
result.append(level)
return result