目录

0103:二叉树的锯齿形层序遍历(★)

力扣第 103 题

题目

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[20,9],[15,7]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

提示:

  • 树中节点数目在范围 [0, 2000]
  • -100 <= Node.val <= 100

相似问题:

分析

0102 升级版,将奇数层的节点反序即可。

解答

1
2
3
4
5
6
7
class Solution:
    def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        res,Q = [],[root] if root else []
        while Q:
            res.append([u.val for u in (Q[::-1] if len(res)%2 else Q)])
            Q = [c for u in Q for c in [u.left,u.right] if c]
        return res

26 ms