C++算法:队列与BFS
📅 2026/7/6 8:08:38
👁️ 次浏览
队列与BFS1.N叉树的层序遍历使用BFS即宽度优先搜索。把节点放入队列中当节点出队列时让其孩子节点入队列记录每层节点数量。classSolution{public:vectorvectorintlevelOrder(Node*root){vectorvectorintret;queueNode*q;if(rootnullptr)returnret;q.push(root);while(!q.empty()){vectorintv;intlenq.size();//当前层节点数量for(inti0;ilen;i){Node*pq.front();q.pop();v.push_back(p-val);for(Node*child:p-children)//下一层节点入队列if(child!nullptr)q.push(child);}ret.push_back(v);}returnret;}};2.二叉树的锯齿形层序遍历与上一题相似锯齿形层序遍历时可以照常从左到右遍历把第一层记为level1每偶数层时逆序数组即可。也可以使用别的方法只要能在偶数层逆序即可。/** * 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) {} * }; */classSolution{public:vectorvectorintzigzagLevelOrder(TreeNode*root){vectorvectorintret;queueTreeNode*q;intflag1;// 规定flag0小于时逆序数组。if(rootnullptr)returnret;q.push(root);while(!q.empty()){intlenq.size();vectorintv;for(inti0;ilen;i){TreeNode*pq.front();q.pop();v.push_back(p-val);if(p-left)q.push(p-left);if(p-right)q.push(p-right);}if(flag0)//判断是否逆序数组reverse(v.begin(),v.end());flag*-1;ret.push_back(v);}returnret;}};3.二叉树最大宽度根据题意如果直接按照前面题目的模板会出现超出内存限制的情况。如下图所示3000个节点分别位于两侧中间全为空节点。此时可以考虑树的顺序存储。即给树的每个节点从左到右从上到下编号如果从1开始编号某个节点下标为x则它的孩子节点为2x和2x1。依旧使用循环队列的模板非空节点入队列队列元素应使用pair类型记录节点及其下标每次循环取队头和队尾的下标做差再加1即可求出一层的宽度。题目保证最终的宽度在32位带符号的整数范围内如果用int做差返回的宽度错误用unsigned int则能够正确返回宽度。classSolution{public:intwidthOfBinaryTree(TreeNode*root){queuepairTreeNode*,unsignedintq;unsignedintret0;q.push({root,1});while(!q.empty()){autoe1q.front();autoe2q.back();retmax(ret,e2.second-e1.second1);size_t lenq.size();for(inti0;ilen;i){autopq.front();q.pop();if(p.first-left)q.push({p.first-left,p.second*2});if(p.first-right)q.push({p.first-right,p.second*21});}}returnret;}};4.在每个树行中找最大值与1、2题类似。只需用一个变量在遍历时记录最大值即可。classSolution{public:vectorintlargestValues(TreeNode*root){queueTreeNode*q;vectorintret;if(rootnullptr)returnret;q.push(root);while(!q.empty()){intMaxINT_MIN;size_t lenq.size();for(inti0;ilen;i){TreeNode*pq.front();q.pop();if(Maxp-val)Maxp-val;if(p-left)q.push(p-left);if(p-right)q.push(p-right);}ret.push_back(Max);}returnret;}};
构建私有化AI知识库:AnythingLLM如何重新定义企业智能文档交互 【免费下载链接】anything-llm Stop renting your intelligence. Own it with AnythingLLM. Everything you need for a powerful local-first agent experience 项目地址: https://gitcode.com/Git…
📅 2026/7/6 8:08:38
1. 项目概述:当AI大模型遇上单元测试最近在搞一个后台服务的重构,代码量不小,每次改完核心逻辑,最头疼的就是跑一遍单元测试。传统的单元测试编写,说白了就是体力活:你得先理解业务逻辑,然后绞尽…
📅 2026/7/6 8:06:38
在日常的开发和业务运营中,我们常常面临一个共同的痛点:大量重复性、高耗时的工作占据了团队的核心精力。无论是客服部门每天需要回复成百上千条相似的用户咨询,还是市场团队为了赶促销节点不得不熬夜批量撰写营销文案,亦或是开发…
📅 2026/7/6 8:06:37
1. 项目概述:为什么我们需要EMBA这样的工具?在物联网设备、工业控制系统、智能家居乃至汽车电子领域,嵌入式设备已经无处不在。作为一名长期在安全一线摸爬滚打的从业者,我见过太多这样的场景:一个看似不起眼的智能摄像…
📅 2026/7/6 9:05:09
1. 项目概述:当AI编程助手遇上“破解”工具 最近在开发者圈子里,关于Cursor Pro的讨论热度一直居高不下。作为一款集成了先进大语言模型的AI编程助手,Cursor Pro凭借其强大的代码生成、智能补全和对话式编程能力,确实让很多程序员…
📅 2026/7/6 9:05:09
1. 项目概述:为什么我们需要 Argon2rs? 在构建任何需要处理用户身份认证的系统时,密码的安全存储都是第一道、也是最重要的一道防线。很多开发者,尤其是刚入行的朋友,可能会觉得“不就是把密码存进数据库吗?…
📅 2026/7/6 9:05:09
1. 项目概述:为什么程序员需要关注证书? 在技术圈子里,关于“证书有没有用”的争论从来没停过。我刚入行那会儿,也坚信“技术在手,天下我有”,觉得证书不过是纸上谈兵。但十几年摸爬滚打下来,带…
📅 2026/7/6 9:05:09
1. 项目概述与核心价值 如果你正在用 Playwright 做自动化测试或者数据抓取,有没有遇到过这样的场景:测试一个下单流程,但支付接口总是不稳定,导致你的测试脚本动不动就失败;或者你想测试前端页面在网络超时或服务器返…
📅 2026/7/6 9:05:09
本文还有配套的精品资源,点击获取
简介:直接输入海拔高度(米),就能算出对应位置的温度、压力、大气密度、声速、重力加速度、动力粘度、运动粘度、热传导系数和分子数密度这九个关键大气参数。所有计算严格遵循1976…
📅 2026/7/6 9:03:06
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray
你是否厌倦了Windows任务栏上密密麻麻的图标&…
📅 2026/7/6 0:01:19
1. 项目概述:一次对React Server Components核心安全机制的深度剖析 最近在安全研究圈里,CVE-2025-55182这个编号被频繁提及,它直指React生态中一个相对较新的概念——React Server Components(RSC)。作为一个长期关注…
📅 2026/7/6 0:01:20
星露谷物语终极MOD指南:5个步骤打造智能自动化农场 【免费下载链接】StardewMods Mods for Stardew Valley using SMAPI. 项目地址: https://gitcode.com/gh_mirrors/st/StardewMods
你是否厌倦了在星露谷物语中重复收割、加工、存储的繁琐操作?梦…
📅 2026/7/6 0:01:20
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/5 0:01:51
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/6 6:10:21
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/6 5:35:58
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/6 6:10:28
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/6 6:10:26
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/5 23:45:08