二叉树的层序遍历的理解一直模糊不清,虽然能写出来但是代码一一直很冗长!
对于普通的层序遍历不记录每一层有哪些数据的BFS很简单:
s = [root]
while s:
cur_node = s.pop(0)
print(cur_node.val)
if cur_node.left:
s.append(cur_node.left)
if cur_node.right:
s.append(cur_node.right)
但是,当我需要单独处理每一层的数据时,如何将每一层的数据分开就会比较麻烦,所以可以使用一个level数组来替换上面的s数组来存放每一层的数据,而不是一个一个的添加
level = [root]
while level:
next_level = []
# 直接以层位单位进行操作和添加!
for i in level:
# 当i为空时continue
if not i:
continue
print(i.val)
next_level.append(i.left)
next_level.append(i.right)
level = next_level