1.这是一道二叉树进行层序遍历的问题
其中,就是要对每一层进行区分。这里采用广度优先的算法,并且记录每层加进来的个数就可以解决。
另外,本题也可以使用深度优先的算法实现。根据深度构建多个list,然后每搜一层时,添加到对应的list。
链接:
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