当前位置: 首页 > news >正文

(LeetCode 面试经典 150 题) 103. 二叉树的锯齿形层序遍历(广度优先搜索bfs)

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

在这里插入图片描述
思路:广度优先搜索bfs,时间复杂度0(n)。

C++版本:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) {vector<vector<int>> ans;if(root==nullptr) return ans;queue<TreeNode *> qu;qu.push(root);// 当前层节点数不为0while(qu.size()>0){// 当前层节点数int n=qu.size();vector<int> v;for(int i=0;i<n;i++){TreeNode * tmp=qu.front();qu.pop();v.push_back(tmp->val);if(tmp->left!=nullptr) qu.push(tmp->left);if(tmp->right!=nullptr) qu.push(tmp->right);}if(ans.size()%2==1) reverse(v.begin(),v.end());ans.push_back(v);}return ans;}
};

JAVA版本:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> ans=new ArrayList<>();if(root==null) return ans;Queue<TreeNode> qu=new LinkedList<>();qu.add(root);while(qu.size()>0){int n=qu.size();List<Integer> v=new ArrayList<>();for(int i=0;i<n;i++){TreeNode  tmp=qu.poll();v.add(tmp.val);if(tmp.left!=null) qu.add(tmp.left);if(tmp.right!=null) qu.add(tmp.right);}if(ans.size()%2==1) Collections.reverse(v);ans.add(v);}return ans;}
}

GO版本:

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func zigzagLevelOrder(root *TreeNode) [][]int {ans:=[][]int{}if root==nil {return ans}qu:=[]*TreeNode{root}for len(qu)>0 {n:=len(qu)v:=make([]int,n)for i:=0;i<n;i++ {tmp:=qu[0]qu=qu[1:]if len(ans)%2==0 {v[i]=tmp.Val}else{v[n-i-1]=tmp.Val}if tmp.Left!=nil {qu=append(qu,tmp.Left)}if tmp.Right!=nil {qu=append(qu,tmp.Right)}}ans=append(ans,v)}return ans}
http://www.dtcms.com/a/355320.html

相关文章:

  • [n8n] 工作流数据库管理SQLite | 数据访问层-REST API服务
  • 解决PyCharm打开PowerShell终端报错找不到conda-hook.ps1文件
  • 前端javascript在线生成excel,word模板-通用场景(免费)
  • Spring Boot 定时任务入门
  • 使用Java实现PDF文件安全检测:防止恶意内容注入
  • ubuntu20安装lammps
  • PDFMathTranslate,完全免费的电脑 PDF 文档翻译软件
  • 怎么保护信息安全?技术理论分析
  • Shell 脚本编程规范与变量
  • [调试][实现][原理]用Golang实现建议断点调试器
  • 裸金属服务器与虚拟机、物理机的核心差异是什么?
  • 鸿蒙Harmony-从零开始构建类似于安卓GreenDao的ORM数据库(二)
  • Kea DHCP高危漏洞CVE-2025-40779:单个数据包即可导致服务器崩溃
  • 获取小红书某个用户列表
  • Swift 解法详解 LeetCode 365:水壶问题
  • day083-Filebeat数据采集案例与Kibana可视化应用
  • Leetcode 494. 目标和 动态规划-01背包
  • 【踩坑记录】SpringBoot 项目报 Communications link failure 的解决方法
  • 数据结构初阶:详解双链表
  • 在angular20中使用monaco-editor
  • LLM Agent工具设计规范总结
  • Python 实现归并排序:从原理到代码
  • Ansys Electronics Desktop 2025 R2 软件界面介绍
  • open webui源码分析10-四个特征之搜索
  • 系统架构师-软件工程
  • 前端响应式设计
  • 推荐系统王树森(五)重排多样性提升
  • 银河麒麟桌面操作系统:为什么不让root直接登录图形界面?以及如何安全地解决这个问题
  • 英伟达营收和利润均超出市场预期,但盘后一度跌超5%
  • Groovy语法入门