leetcode 116. 填充每个节点的下一个右侧节点指针
leetcode 116. 填充每个节点的下一个右侧节点指针
题目
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。

思路
这道题假设用层序遍历开一个队列来做其实非常的简单,但是他既然说了进阶要不开额外空间,这一点就值得考量了。实际上就是怎样才能去掉这个队列呢,那就必然得拿到下一个节点,这个可以借助父节点的next来做,因为遍历到下一层的时候,父节点的next是已知的。所以就一目了然了,这道题除了迭代外,还可以用递归。
代码
// 迭代
/*
// Definition for a Node.
class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, Node _left, Node _right, Node _next) {val = _val;left = _left;right = _right;next = _next;}
};
*/class Solution {public Node connect(Node root) {if (root == null) {return root;}// Deque<Node> queue = new ArrayDeque<Node>();// queue.offerLast(root);Node node = root;while (node.left != null) {Node firstnode = node;while (node != null) {if (node.left != null) {node.left.next = node.right;}if (node.next != null) {node.right.next = node.next.left;}node = node.next;}node = firstnode.left;}return root;}
}
// 递归
/*
// Definition for a Node.
class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, Node _left, Node _right, Node _next) {val = _val;left = _left;right = _right;next = _next;}
};
*/class Solution {public Node connect(Node root) {if (root == null) {return null;}if (root.left != null) {root.left.next = root.right;root.right.next = root.next == null ? null : root.next.left;connect(root.left);connect(root.right);}return root;}
}
相关文章:
leetcode 116. 填充每个节点的下一个右侧节点指针
leetcode 116. 填充每个节点的下一个右侧节点指针 题目 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next …...
[C++]优先级队列
1 .了解优先级队列 优先级队列是一种容器适配器,根据一些严格的弱排序标准,专门设计使其第一个元素始终是它所包含的元素中最大的元素。 此上下文类似于堆,其中可以随时插入元素,并且只能检索最大堆元素(优先级队列中顶…...
学习大数据DAY22 Linux 基 本 指 令 3与 在 Linux 系 统 中 配 置MySQL 和 Oracle
目录 网络配置类 ps 显示系统执行的进程 kill systemctl 服务管理 配置静态 ip 常见错误---虚拟机重启网卡失败或者网卡丢失 mysql 操作 上机练习 6---安装 mysql---参考《mysql 安装》文档 解锁 scott 重启后的步骤 上机练习 7---安装 oracle---参考《oracle 安装》…...
scp 服务器复制命令
步骤如下: 终端执行如下命令 #ssh-keygen -t rsa 2. 密钥生成后会在 /root/.ssh/ 文件夹下产生两个文件 id_rsa id_rsa.pub 将 id_rsa.pub 文件复制到 152.136.121.24 执行如下命令 scp /root/.ssh/id_rsa.pub root152.136.121.24:/root/.ssh/authorized_keys…...
PyQt5学习路线
后续会根据该文章的路线逐步发布对应的教程,订阅专栏不迷路🥰 本专栏纯干货🤩 学习Python的PyQt5库,可以遵循以下的学习路线: 1. Python基础 掌握Python语法:确保你熟悉Python的基本语法,包括…...
2024论文精读:利用大语言模型(GPT)增强上下文学习去做关系抽取任务
文章目录 1. 前置知识2. 文章通过什么来引出他要解决的问题3. 作者通过什么提出RE任务存在上面所提出的那几个问题3.1 问题一:ICL检索到的**示范**中实体个关系的相关性很低。3.2 问题二:示范中缺乏解释输入-标签映射导致ICL效果不佳。 4. 作者为了解决上…...
WEB 手柄 http通信,mcu端解析代码 2024/7/23 日志
WEB 手柄 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>WEB遥控器</title> </head> &l…...
cmake中的正则表达式
以下字符或者字符组合在cmake的正则表达式中的特殊含义: ^ 匹配输入的开始 $ 匹配输入的结束 . 匹配任意一个字符 \<char> 匹配一个字符,如.匹配字符.,\匹配字符\,\a匹配字符a [ ] 匹配在括号里面的任意字符࿰…...
05. Java 三大范式
1. 前言 在面向对象语言中涉及到诸多的设计模式,例如单例模式、适配器模式,设计模式的存在是为了让系统中的代码逻辑更加清晰,帮助开发者建立更加健壮的系统,同时满足易修改特性和易扩展特性。数据库设计时也存在类似设计模式的通…...
opencv 按键开启连续截图,并加载提示图片
背景图小图 键盘监听使用的是pynput 库 保存图片时使用了年月日时分秒命名 原图: from pynput import keyboard import cv2 import time# 键盘监听 def on_press(key):global jieglobal guanif key.char a:jie Trueelif key.char d:jie Falseelif key.char…...
Android-- 集成谷歌地图
引言 项目需求需要在谷歌地图: 地图展示,设备点聚合,设备站点,绘制点和区域等功能。 我只针对我涉及到的技术做一下总结,希望能帮到开始接触谷歌地图的伙伴们。 集成步骤 1、在项目的modle的build.gradle中添加依赖如…...
Jvm是如何处理异常的
异常抛出 当Java程序运行时遇到无法处理的情况时,会抛出一个异常(比如在一个方法中如果发生异常),这时会创建一个异常对象,并转交给JVM,该异常对象包含异常名称,异常描述以及异常发生时应用程序的状态。创建异常对象并转交给JVM的过程称为抛出异常。 异常捕捉 当JVM检测…...
recursion depth exceeded” error
有些时候不可以用jax.jit装饰器 参考资料:使用 JAX 后端在 Keras 3 中训练 GAN |由 Khawaja Abaid |中等 (medium.com)...
虚拟现实和增强现实技术系列—Expressive Talking Avatars
文章目录 1. 概述2. 背景介绍3. 数据集3.1 设计标准3.2 数据采集 4. 方法4.1 概述4.2 架构4.3 目标函数 5. 实验评测5.1 用户研究5.2 我们方法的结果5.3 比较与消融研究 1. 概述 支持远程协作者之间的交互和沟通。然而,明确的表达是出了名的难以创建,主…...
网站验证:确保网络安全与信任的重要步骤
网站验证:确保网络安全与信任的重要步骤 引言 在数字时代,网站验证是确保网络安全和建立用户信任的关键措施。随着网络诈骗和恶意软件的日益增多,验证网站的真实性和安全性变得尤为重要。本文将探讨网站验证的重要性、常见的验证方法以及如…...
C语言——字符串比较函数strcmp和strncmp
目录 strcmp 函数原型如下: 示例 注意事项 strcmp自实现代码: strncmp 函数 函数原型: 参数: 返回值: 特点: 两者之间的区别和联系 strcmp strcmp 是 C 语言标准库中的一个函数,用于…...
redis的集群模式
目录 1. 为什么使用redis集群 2. 主从模式 2.1修改配置文件 2.2 开启三台redis服务 2.3配置主从关系 3. 哨兵模式 3.1 监控功能 3.2 选举的机制 3.3 准备条件 4. 去中心化模式 4.1 准备三主三从 4.2 启动redis 4.3 分配槽以及主从关系 4.4 命令行的客户端 redis提供…...
基于微信小程序+SpringBoot+Vue的青少年科普教学系统平台(带1w+文档)
基于微信小程序SpringBootVue的青少年科普教学系统平台(带1w文档) 基于微信小程序SpringBootVue的青少年科普教学系统平台(带1w文档) 这个工具就是解决上述问题的最好的解决方案。它不仅可以实时完成信息处理,还缩短高校教师成果信息管理流程,使其系统化…...
智能听觉:从任务特定的机器学习到基础模型
关键词:计算机听觉、音频基础模型、多模态学习、声音事件检测 声音无处不在,弥漫于我们生活的每一个角落。鸟儿向伴侣倾诉心意的歌声,浓缩咖啡机中蒸汽的嘶嘶作响,午后阳光下昆虫振翅的嗡嗡声,金属屋顶上雨滴跳跃的滴答…...
14、如何⽤DDD设计微服务代码模型
在完成领域模型设计后,接下来我们就可以开始微服务的设计和 落地了。在微服务落地前,⾸先要确定微服务的代码结构,也就是我 下⾯要讲的微服务代码模型。 只有建⽴了标准的微服务代码模型和代码规范后,我们才可以将 领域对象映射到…...
Phi-4-mini-reasoning实操手册:vLLM日志分析与常见加载失败排障指南
Phi-4-mini-reasoning实操手册:vLLM日志分析与常见加载失败排障指南 1. 模型简介 Phi-4-mini-reasoning是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族的一员,它经过专门微调以提升数学…...
如何确保usearch内存安全:Safe C++与Rust的终极对比指南
如何确保usearch内存安全:Safe C与Rust的终极对比指南 【免费下载链接】usearch Fastest Open-Source Search & Clustering engine for Vectors & 🔜 Strings in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and …...
Hunyuan-MT-7B翻译终端实操手册:Pixel Language Portal的HUD状态监控与错误回溯机制详解
Hunyuan-MT-7B翻译终端实操手册:Pixel Language Portal的HUD状态监控与错误回溯机制详解 1. 像素语言传送门概览 Pixel Language Portal是一款基于腾讯Hunyuan-MT-7B大模型构建的创新翻译工具,将传统翻译体验重构为16-bit像素冒险风格。这款工具不仅提…...
Qt 实时数据可视化工程实践:环形缓冲区实践
目录 前言 一、架构设计 1.1 分层架构图 1.2 数据写入流 1.3 数据刷新流 (定时器驱动 → 视图更新) 1.4 核心设计思想 二、核心实现详解 2.1 RingBuffer:环形缓冲区实现 2.1.1 append函数(线程安全写入) 函数主体实现: …...
3种颠覆式方案:让IDM突破限制的秘密
3种颠覆式方案:让IDM突破限制的秘密 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 作为技术侦探,我们经常遇到用户反馈IDM试用到期的困扰…...
保姆级教程:手把手教你本地部署Qwen2.5-7B-Instruct旗舰模型
保姆级教程:手把手教你本地部署Qwen2.5-7B-Instruct旗舰模型 1. 前言:为什么选择Qwen2.5-7B-Instruct Qwen2.5-7B-Instruct是阿里通义千问团队在2024年9月发布的最新旗舰级开源大语言模型。相比轻量级的1.5B/3B版本,7B参数规模带来了质的飞…...
百川2-13B-4bits模型调优:OpenClaw任务响应速度提升50%的3个技巧
百川2-13B-4bits模型调优:OpenClaw任务响应速度提升50%的3个技巧 1. 问题背景与优化动机 去年冬天,当我第一次将百川2-13B-4bits模型接入OpenClaw时,发现一个奇怪现象:同样的自动化任务,在本地测试时响应飞快&#x…...
别再只盯着data://协议了!详解Nginx日志文件包含漏洞的另类利用与防御
从日志污染到权限沦陷:Nginx文件包含漏洞的攻防全景解析 当Web服务器的日志文件成为攻击者的跳板,一场关于权限与防御的暗战便悄然展开。Nginx作为现代互联网基础设施的核心组件,其日志机制在记录访问轨迹的同时,也可能成为系统安…...
Vivo Xplay6专用降级刷机工具AFTool|支持1.15.1/1.16.6/1.16.14等多版本线刷|含教程+驱动+工具包
温馨提示:文末有联系方式【适用机型精准说明】 本工具包专为Vivo Xplay6(型号V317A/V317K)深度适配,非Xplay6机型(含其他Vivo手机)请勿购买——不同机型Bootloader锁机制与分区结构差异极大,强行…...
QGIS进阶指南:动态标注与条件表达式高级应用
1. 动态标注的核心价值与应用场景 当你面对一个包含上千条建筑数据的地图图层时,传统静态标注会显得力不从心——商场和医院用相同字体显示,重要地标淹没在普通建筑中,数据更新后还得手动调整样式。这就是动态标注技术大显身手的时候了。 动态…...
