leetcode_117 填充每个节点的下一个右侧节点指针 II
文章目录
- 1. 题意
- 2. 题解
- 2.1 BFS
- 2.2 BFS+空间优化
- 2.3 DFS序+层次记录
- 3. Ref
1. 题意
在一颗树的同层之间用指针把他们链接起来。
填充每个节点的下一个右侧节点指针 II
2. 题解
2.1 BFS
用一个变量记录下同层最右侧的节点,当遍历到时更新下一层的最右侧节点即可。
class Solution {
public:Node* connect(Node* root) {Node *righMost = root;queue<Node *> q;if (root)q.push(root);while (!q.empty()) {Node *cur = q.front();q.pop();if ( cur -> left) q.push(cur->left);if ( cur->right )q.push(cur->right);if (cur == righMost) {righMost = q.back();}else {cur->next = q.front();}}return root;}
};
2.2 BFS+空间优化
在将下一层的节点放入队列时,其实就可以将他们链接起来了。从而省去了队列的空间,此时保存下每一层的最开始的节点就可以了。
class Solution {
public:void handle(Node *&pre, Node *&nextStart,Node *rt) {if (nullptr == rt) return ;if (!pre) {nextStart = rt;}else {pre->next = rt;}pre = rt;}Node* connect(Node* root) {Node *righMost = root;Node *start = root;Node *nextStart = nullptr;Node *pre = nullptr;for ( ;start; start = nextStart) {nextStart = nullptr;pre = nullptr;for ( ;start;start = start->next) {handle(pre, nextStart, start->left);handle(pre, nextStart, start->right);}}return root;}
};
2.3 DFS序+层次记录
利用先序遍历的永远是从左到又这一特点,用一个pre[depth]数组来记录当前DFS遍历到的该层的左侧节点。当再次遍历到该层时,链接pre[depth]节点到当前节点,并更新。
class Solution {
public:void handle(Node *&pre, Node *&nextStart,Node *rt) {if (nullptr == rt) return ;if (!pre) {nextStart = rt;}else {pre->next = rt;}pre = rt;}void dfs(std::vector<Node*> &pre, Node *root, int depth) {if (nullptr == root)return;int sz = pre.size();if (sz == depth) {pre.push_back(root);}else {pre[depth]->next = root;pre[depth] = root;}dfs(pre, root->left, depth + 1);dfs(pre, root->right, depth + 1);}Node* connect(Node* root) {vector<Node *> pre;dfs(pre, root, 0);return root;}
};
3. Ref
03xf题解
相关文章:
leetcode_117 填充每个节点的下一个右侧节点指针 II
文章目录 1. 题意2. 题解2.1 BFS2.2 BFS空间优化2.3 DFS序层次记录 3. Ref 1. 题意 在一颗树的同层之间用指针把他们链接起来。 填充每个节点的下一个右侧节点指针 II 2. 题解 2.1 BFS 用一个变量记录下同层最右侧的节点,当遍历到时更新下一层的最右侧节点即可…...
亲测 IDEA Pycharm 全家桶 自动重置免费30天
理论上是通用的 插件市场安装 添加第三方插件仓库地址 在Settings/Preferences... -> Plugins 内手动添加第三方插件仓库地址:https://plugins.zhile.io 搜索:IDE Eval Reset插件进行安装。如果搜索不到请注意是否做好了上一步?网络是否…...
Marp: 将 Markdown 变为 PPT 式样的 VScode 插件
样例代码: --- marp: true size: 16:9 theme: default header: footer: --- <!-- _footer: Jia ming<br>Gansu University of Political Science and Law --> <!-- _backgroundColor: lightskyblue --> ## <!-- fit --> 笔记检验概述>…...
根据正则表达式截取字串符,这个办法打败99%程序员
作为一名程序员,常常会在以下情况下使用函数功能根据正则表达式截取字符串: 1.字符串处理:当需要使用正则表达式匹配和提取字符串中的特定模式时,可以使用该函数。例如,从一段文本中提取电子邮件地址、电话号码或网站…...
冬天女儿的羽绒服就选它了,哈哈很喜欢
长款设计感满满的羽绒服 真的一下子就戳中了我的心巴 90白鸭绒+杜邦三防工艺+精细压线 厚实保暖不臃肿,粉色撞色甜美又可爱...
Vim插件配置
工欲善其事,必先利其器,倒腾一下vim的配置,做个记录。 ".vimrc里的内容:""for base configure set t_Co256 if ! has("gui_running")set t_Co256 endifif &diffhighlight DiffAdd ctermbold cte…...
函数参数的最佳传递方式与现代C++的规则
函数参数的最佳传递方式与现代C的规则 在C中,如何最佳地传递函数参数以及如何处理类的特殊成员函数,一直是优化性能和代码质量的重要话题。下面我将详细解释这些概念。 使用移动语义实现 Swap 函数 移动语义(Move Semantics)能…...
Asterisk Ubuntu 安装
更新环境 sudo apt update sudo apt install wget build-essential git autoconf subversion pkg-config libtool sudo contrib/scripts/get_mp3_source.sh A addons/mp3 A addons/mp3/common.c A addons/mp3/huffman.h A addons/mp3/tabinit.c A addons/mp3/Ma…...
rwkv模型lora微调之accelerate和deepspeed训练加速
目录 一、rwkv模型简介 二、lora原理简介 三、rwkv-lora微调 1、数据整理 2、环境搭建 a、Dockerfile编写 b、制造镜像 c、容器启动 3、训练代码修改 四、模型推理 1、模型推理 2、lora权重合并 3、推理web服务 五、总结 由于业务采用的ChatGLM模型推理成本太大了…...
分享一下在微信小程序里怎么做一个投票链接
在当今信息化社会,投票已成为各行各业收集意见、汇聚智慧的重要手段。传统的投票方式往往需要投入大量人力物力,而如今,借助微信小程序,我们可以在几分钟内创建一个高效、便捷的投票平台。本文将详细介绍如何在微信小程序中添加投…...
v-model语法糖
v-model原理 v-model实现双向绑定的语法糖,常用于表单与组件之间的数据双向绑定v-model本质上是 value属性和input事件的一层包装 v-model的作用:提供数据的双向绑定数据发生了改变,页面会自动变 v-bind:value页面输入改变 , 数据…...
纷享销客荣获最佳制造业数字营销服务商奖
2023年10月26日,第二届中国制造业数智化发展大会在上海盛大召开。本次大会汇聚了制造行业的顶尖企业和专家,共同探讨如何通过数字化转型赋能企业自身成长,实现信息化向数字化的升级转型。 在本次盛会上,纷享销客以其卓越的基本面、…...
蓝桥杯每日一题2023.11.3
题目描述 承压计算 - 蓝桥云课 (lanqiao.cn) 题目分析 将重量存入a中,每一层从上到下进行计算,用d进行计算列的重量,当前d的重量应为正上数组和右上数组的个半和并加上自身的重量 计算到30层记录最大最小值,进行比例运算即可 …...
中国电子云-隐私计算-云原生安全可信计算,物理-硬件-系统-云产品-云平台,数据安全防护
目录 联邦学习的架构思想 中国电子云-隐私计算-云原生安全...
PHP服务器端电商API原理及示例讲解(电商接口开发/接入)
下面小编就为大家分享一篇PHP服务器端API原理及示例讲解(接口开发),具有很好的参考价值,希望对大家有所帮助 相信大家都做过PHP请求电商API接口获取数据,比如淘宝平台商品API接口,订单接口,京东接口,1688接…...
Spring Cloud应用- Eureka原理、搭建
初期对Spring Cloud的学习以应用搭建为主,所以内容不会太枯燥。 一直以来,自以为Spring全家桶的学习中,Spring framework是基础中的基础,部分内容也还是必须要读源码去理解底层原理,SpringMVC、SpringBoot,…...
Servlet 设置启动时机(web.xml方式和@WebServlet方式)
1、通过web.xml方式 5)Servlet的启动时机 - 默认情况下,servlet是不会随着容器的启动而被实例化的,只有当第一次给我发请求时才会被实例化那么,这种情况对于第一次请求是不公平的因此,为了提高用户体验度,提高服务器的…...
一个使用uniapp+vue3+ts+pinia+uview-plus开发小程序的基础模板
uniappuviewPlusvue3tspiniavite 开发基础模板 使用 uniapp vue3 ts pinia vite 开发基础模板,拿来即可使用,不要删除 yarn.lock 文件,否则会启动报错,这个可能和 pinia 的版本有关,所以不要随意修改。 拉取代码…...
Kali安装docker
第一步:kali添加Docker官方的GPG密钥 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add 第二步:进入root更新源: su rootecho ‘deb https://download.docker.com/linux/debian stretch stable’> /etc/ap…...
Maven第七章:Maven工程最佳实践
Maven第七章:Maven工程最佳实践 前言 本章重点,通过一个maven工程最佳实践案例,熟悉和掌握maven在项目中的应用基本思路,让你的技能值瞬间暴涨。 最佳实践 确定项目的坐标和依赖 在Maven中,项目的坐标定义了项目的唯一标识符,包括groupId、artifactId和version。因此,在…...
影刀RPA跨境店群运营架构:Python协同Chromium底层调度与高并发容器化架构
定了。在这场旷日持久的跨境电商反爬风控拉锯战中,我们终于用一套基于 Python 深度协同的分布式微服务调度架构,重塑了跨境千店矩阵的自动化底座。 这几天,科技圈被“DeepSeek V4 首发华为昇腾芯片,国产 AI 开始打破英伟达 CUDA …...
中小企业老板必看:收藏这份AI转型轻装上阵指南,领跑AI浪潮!
文章指出,在AI浪潮下,中小企业并非处于劣势。通过“轻装上阵”策略,摆脱历史包袱,利用流程未固化、决策链短等优势,中小企业可以弯道超车。文章提出了五个AI转型方法论:1)轻装上阵,利…...
Google I/O 2026 第二天:Gemini 3.5 实测性能深度解析与 Android XR 生态全景
摘要:Google I/O 2026 大会进入第二天,技术社区开始深度实测 Gemini 3.5 Pro 代号「Cappuccino」。本文汇总第一天 Keynote 后的实测数据:Gemini 3.5 Pro 编程能力达 GPT-5.5 的 92%,成本仅为其 1/8;Gemini 3.5 Flash …...
嵌入式开发避坑:S19/SREC文件地址重映射时,如何避免覆盖有效数据?
嵌入式开发实战:S19文件地址重映射的安全操作指南 在嵌入式系统开发中,固件升级和内存布局调整是工程师经常面临的挑战。当需要将校准参数、配置表等关键数据移动到新的内存区域时,如何确保操作的安全性成为关键问题。许多开发者都曾遇到过这…...
从防御者视角看Fastjson 1.2.24漏洞:如何用Docker+vulhub快速搭建靶场并验证修复方案
防御视角下的Fastjson 1.2.24漏洞实战:Docker靶场搭建与修复方案验证 在当今的软件开发中,JSON处理库的安全性问题日益凸显。作为Java生态中最流行的JSON库之一,Fastjson因其高性能而广受欢迎,但同时也因其历史漏洞频发而备受关注…...
昇腾C解交织API文档
DeInterleave 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.c…...
ESP32任务阻塞导致看门狗报错?手把手教你用menuconfig调整超时时间
ESP32任务看门狗超时问题全解析:从原理到menuconfig实战配置 在ESP32开发过程中,许多开发者都遇到过那个令人头疼的报错:"Task watchdog got triggered"。这个看似简单的错误背后,其实隐藏着实时操作系统任务调度的核心…...
hcxdumptool实战指南:5大高效技巧提升无线网络安全检测效率
hcxdumptool实战指南:5大高效技巧提升无线网络安全检测效率 【免费下载链接】hcxdumptool Small tool to capture packets from wlan devices. 项目地址: https://gitcode.com/gh_mirrors/hc/hcxdumptool hcxdumptool是一款专业的无线网络安全检测工具&#…...
OBS智能跟拍插件:3分钟实现直播自动追踪的终极指南
OBS智能跟拍插件:3分钟实现直播自动追踪的终极指南 【免费下载链接】obs-face-tracker Face tracking plugin for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-face-tracker 您是否在直播时经常为手动调整摄像头而烦恼?是否希望…...
YOLO11优化:CVPR2026 UCMNet |FrequencyCM赋能YOLO C3k2:从频域增强视角解决感受野与细节瓶颈
💡💡💡现有YOLO C3k2的问题点: 感受野受限:堆叠小核卷积(如33)难以捕获全局上下文,对尺度变化大、小目标或遮挡目标特征提取不足。 频域信息缺失:仅依赖空间域卷积,无法有效利用傅里叶域的高频细节,导致低对比度、模糊区域重建能力弱。 特征交互低效:通道间信…...
