相关阅读:https://programmercarl.com/0102.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.html#_102-%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86
层序遍历即二叉树的广度优先遍历,使用队列先进先出的特性。
#层序遍历
from collections import deque
def levelOrder(node) :
if not node:
return []
queue = deque([node])
res = []
while queue:
j = 0
level = []
print('current length', len(queue) )
print('current level', level)
for i in range(len(queue)):
cur = queue.popleft()
level.append(cur.val)
if cur.left:
queue.append(cur.left)
if cur.right:
queue.append(cur.right)
print('after pop length', len(queue) )
#print(queue)
print('after pop level',level)
print(res)
print('this is %d for loop' % i)
res.append(level)
print('this is %d while loop' % j)
j += 1
return res
leetcode 107:
from collections import deque
def levelOrderBottom(root):
if not root:
return []
#队列
queue = deque([root])
#存放所有节点
res = []
while queue:
#存放每一层的节点
level = []
for _ in range(len(queue)):
cur = queue.popleft()
level.append(cur.val)
if cur.left:
queue.append(cur.left)
if cur.right:
queue.append(cur.right)
res.append(level)
return res[::-1]
初始队列中的元素是3,弹出时队列剩下的只有[9, 20]分别是节点3的左右子节点。此时队列长度为2,开始下一轮for 循环。
弹出节点9,没有左右子节点。继续弹出节点20,此时队列中没有元素并开始append 节点20的左右节点15, 7。
199:
from collections import deque
def rightSideView(root):
if not root:
return []
queue=deque()
res = []
while queue:
#记录每一层的长度
level_size = len(queue)
for i in range(level_size)
cur = queue.popleft()
if i == level_szie-1:
res.append(cur.val)
if cur.left:
queue.append(cur.left)
if cur.right:
queue.append(cur.right)
return res
因为每一层的长度等价于 len(queue) 所以找出每一层最后一个元素即可。开始想错了,遍历完输出一个二维数组,找到每个二维数组中的一维数组的最后一个,添加到结果列表中。
637
def averageOfLevels(root):
queue = deque()
res = []
while queue:
level_sum = 0
size = len(queue)
for _ in range(size):
cur = queue.popleft()
level_sum += cur.val
if cur.left :
queue.append(cur.left)
if cur.right:
queue.append(cur.right)
res.append(level_sum)
return res
思路是一样的,就是利用queue遍历每一层的特点。
标签:right,cur,level,res,层序,queue,二叉树,append From: https://www.cnblogs.com/yuhao0451/p/17689344.html