1.這是一道二叉樹進行層序遍歷的問題
其中,就是要對每一層進行區(qū)分。這里采用廣度優(yōu)先的算法,并且記錄每層加進來的個數(shù)就可以解決。
另外,本題也可以使用深度優(yōu)先的算法實現(xiàn)。根據(jù)深度構(gòu)建多個list,然后每搜一層時,添加到對應(yīng)的list。

102-binary-tree-level-order-traversal.png
鏈接:
https://leetcode.com/problems/binary-tree-level-order-traversal/
2.題解:
bfs方法
class Solution:
# bfs方式
def levelOrder(self, root):
if root is None:
return None
L = []
queue = []
queue.append(root)
while queue:
# 記錄每次層的長度
lenght = len(queue)
L_ = []
for i in range(lenght):
node = queue.pop(0)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
# print("??")
L_.append(node.val)
# print(L_)
# print("--")
L.append(L_)
return L