103. 二叉树的锯齿形层序遍历
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
解题思路:模仿层序遍历的方法,需要加一个层数指示器,当层数为偶数,则反转列表。
class Solution:def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:if not root:return []# 结果res = []# 队列,存储下一层的节点queue = [root]# 指示方向,统计层数count = 1while queue:cur_l = [] # 当前层的节点结果cur_l_size = len(queue)# 遍历当前层节点for _ in range(cur_l_size):node = queue.pop(0)cur_l.append(node.val)if node.left:queue.append(node.left)if node.right:queue.append(node.right)# 如果是偶数层,则反转if count % 2 == 0:cur_l = cur_l[::-1]res.append(cur_l)count+=1return res