目录
题目
- 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
题解:BFS
- 用BFS把每一层的结点存在一个列表里面,然后判断一下如果是偶数层就翻转列表,最后都加入结果列表返回即可
class Solution:
def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:# 如果根节点为空,直接返回空列表
return []
q = [] # 用一个列表做队列
re = [] # 存储结果的列表
q.append(root) # 把起点放入队列
step = 1 # 记录当前层的编号
while q: # 当队列不为空时
size = len(q)
re1=[]# 存储当前层的结果
# 将当前队列中的所有节点向四周扩散
for _ in range(size):
cur = q.pop(0) # 从头部取出节点
re1.append(cur.val) # 将当前节点的值加入当前层的结果列表
if cur.left is not None:
q.append(cur.left) # 将左子节点加入队列
if cur.right : # 将cur的相邻节点加入队列
q.append(cur.right) # 将右子节点加入队列
if step%2==0:# 如果当前层的编号为偶数,将结果列表反转
re1.reverse()
re.append(re1) # 将当前层的结果列表加入最终结果列表
step += 1 # 增加步数
return re
标签:re1,cur,队列,层序,列表,二叉树,103,节点,append
From: https://www.cnblogs.com/lushuang55/p/17921600.html