LeetCode-103. 二叉树的锯齿形层序遍历【树 广度优先搜索 二叉树】

server/2025/1/16 1:14:18/

LeetCode-103. 二叉树的锯齿形层序遍历【树 广度优先搜索 二叉树】

  • 题目描述:
  • 解题思路一:层序遍历,唯一区别就是`ans.append(level[::-1] if len(ans) % 2 else level)`
  • 背诵版:
  • 解题思路三:0

题目描述:

给你二叉树的根节点 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

解题思路一:层序遍历,唯一区别就是ans.append(level[::-1] if len(ans) % 2 else level)

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:if not root:return []queue = deque([root])ans = []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)ans.append(level[::-1] if len(ans) % 2 else level)return ans

时间复杂度:O(n)
空间复杂度:O(n)

背诵版:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:if not root:return []q = deque([root])ans = []while q:level = []for i in range(len(q)):cur = q.popleft()level.append(cur.val)if cur.left:q.append(cur.left)if cur.right:q.append(cur.right)# if len(ans) % 2 == 0:#     ans.append(level[:])# else:#     ans.append(level[::-1])ans.append(level[::-1] if len(ans) % 2 else level[:])return ans

时间复杂度:O(n)
空间复杂度:O(n)

解题思路三:0


时间复杂度:O(n)
空间复杂度:O(n)


创作不易,观众老爷们请留步… 动起可爱的小手,点个赞再走呗 (๑◕ܫ←๑)
欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究



在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠


http://www.ppmy.cn/server/47673.html

相关文章

Python 高手编程系列三:用于保持跨版本兼容性的常用工具和技术

在 Python 不同版本之间保持兼容性是一项挑战。根据项目的大小不同&#xff0c;这项挑战可能 会增加许多额外的工作量&#xff0c;但绝对可行&#xff0c;也很值得去做。对于在许多环境中都会用到的 Python 包来说&#xff0c;必须要保持跨版本兼容性。如果开源包没有定义明确并…

Android AAudio——C API控制音频流(四)

上一篇文章我们介绍了 C API 中音频流的创建流程,以及打开音频流操作,这里我们再来看一下音频流的其他操作流程 一、音频流操作介绍 1、操作流程图 下图是状态变化流程图,虚线框表示瞬时状态,实线框表示稳定状态。 2、操作函数 上图中主要包含下面几个操作函数: aaudio…

微信小程序动画和Canvas笔记

微信小程序动画和Canvas 动画 使用wx.createAnimation创建动画对象 // 创建动画对象 const animation wx.createAnimation({duration: 1000, // 动画持续时间timingFunction: ease, // 动画速度曲线delay: 0, // 动画延迟时间transformOrigin: 50% 50% 0, // 动画的中心点 …

java项目使用jsch下载ftp文件

pom <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version> </dependency>demo1&#xff1a;main方法直接下载 package com.example.controller;import com.jcraft.jsch.*; im…

进程间通信(27000字超详解)

&#x1f30e;进程间通信 文章目录&#xff1a; 进程间通信 进程间通信简介       进程间通信目的       初识进程间通信       进程间通信的分类 匿名管道通信       认识管道       匿名管道       匿名管道测试       管道的四种…

OpenCV学习(4.1) 改变颜色空间

1.目标 在本教程中&#xff0c;你将学习如何将图像从一个色彩空间转换到另一个&#xff0c;像BGR↔灰色&#xff0c;BGR↔HSV等除此之外&#xff0c;我们还将创建一个应用程序&#xff0c;以提取视频中的彩色对象你将学习以下功能&#xff1a;cv2.cvtColor&#xff0c;**cv2.i…

LeetCode刷题 | Day 2 最长严格递增或递减子列表(Longest Increasing or Decreasing SubList)

LeetCode刷题 | Day 2 最长严格递增或递减子列表(Longest Increasing Decreasing SubList) 文章目录 LeetCode刷题 | Day 2 最长严格递增或递减子列表(Longest Increasing Decreasing SubList)前言一、题目概述二、解题方法2.1 动态规划思想2.1.1 思路讲解2.1.2 伪代码 + 逐…

云计算-高级云资源配置(Advanced Cloud Provisioning)

向Bucket添加公共访问&#xff08;Adding Public Access to Bucket&#xff09; 在模块5中&#xff0c;我们已经看到如何使用CloudFormation创建和更新一个Bucket。现在我们将进一步更新该Bucket&#xff0c;添加公共访问权限。我们在模块5中使用的模板&#xff08;third_templ…