0
点赞
收藏
分享

微信扫一扫

【联邦学习贡献评估-数据评估指标的介绍】

胡桑_b06e 2024-03-15 阅读 9

103. 二叉树的锯齿形层序遍历

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

解题思路:模仿层序遍历的方法,需要加一个层数指示器,当层数为偶数,则反转列表。


class Solution:
    def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        if not root:
            return []
        # 结果
        res = []
        # 队列,存储下一层的节点
        queue = [root]
        # 指示方向,统计层数
        count = 1
        while 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+=1

        return res

举报

相关推荐

0 条评论