力扣---填充每个节点的下一个右侧节点指针 II

news/2024/9/20 1:21:27/ 标签: leetcode, 算法, 数据结构

给定一个二叉树:

struct Node {int val;Node *left;Node *right;Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL

初始状态下,所有 next 指针都被设置为 NULL

示例 1:

输入:root = [1,2,3,4,5,null,7]
输出:[1,#,2,3,#,4,5,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),'#' 表示每层的末尾。

示例 2:

输入:root = []
输出:[]

解题思路:

作者:灵茶山艾府
链接:https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/solutions/1/san-chong-fang-fa-dfsbfsbfslian-biao-fu-1bmqp/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

代码:

/*
// Definition for a Node.
class Node {
public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NULL), next(NULL) {}Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}Node(int _val, Node* _left, Node* _right, Node* _next): val(_val), left(_left), right(_right), next(_next) {}
};
*/class Solution {vector<Node *> pre;
public:Node* connect(Node* root) {dfs(root,0);return root;}void dfs(Node * node , int depth){if (node == nullptr) {return;}if (depth==pre.size()){   // node 是这一层最左边的节点  (新的一层)pre.push_back(node);}else{                    // 该层新增节点pre[depth]->next = node;pre[depth] = node;}dfs(node->left,depth+1);dfs(node->right,depth+1);}
};

http://www.ppmy.cn/news/1433508.html

相关文章

Prompt Engineering,提示工程

什么是提示工程&#xff1f; 提示工程也叫【指令工程】。 Prompt发送给大模型的指令。比如[讲个笑话]、[用Python编个贪吃蛇游戏]、[给男/女朋友写情书]等看起来简单&#xff0c;但上手简单精通难 [Propmpt]是AGI时代的[编程语言][Propmpt]是AGI时代的[软件工程][提示工程]是…

Spring5深入浅出篇:JDK代理与CGLIB代理区别

Spring5深入浅出篇:JDK代理与CGLIB代理区别 很多粉丝私信我这个Spring5的课程在哪看,这边是在B站免费观看欢迎大家投币支持一下. https://www.bilibili.com/video/BV1hK411Y7zf JDK动态代理与CGLIB的区别 在Java的世界里&#xff0c;动态代理主要有两种实现方式&#xff1a;JDK…

广州大学《虚拟现实与游戏开发》实验报告一HTC-VR环境搭建与开发

广州大学学生实验报告 开课实验室&#xff1a; 学院 年级、专业、班 姓名 学号 实验课程名称 虚拟现实与游戏开发 成绩 实验项目名称 1. HTC-VR环境搭建与开发 指导老师 实验目的 HTC VIVE硬件安装虚拟现实开发环境搭建 3.熟悉虚拟现实硬件系统和…

springboot-异步、定时、邮件任务

目录 一&#xff0c;前言 二&#xff0c;异步 2.1&#xff0c;案例&#xff1a; 1&#xff0c;首先创建一个service&#xff1a; 2&#xff0c;Controller: ① 想办法告诉spring我们的异步方法是异步的&#xff0c;所以要在方法上添加注解 Async ②去springboot主程序中开…

深入Spring Boot配置机制:如何高效管理应用配置

一、属性的优先级和配置文件的位置 在Spring Boot应用中&#xff0c;我们可以在多个地方定义配置属性&#xff0c;并且Spring Boot提供了一套优先级排序&#xff0c;来决定同一属性多处定义时的覆盖关系。理解这个机制对于配置管理至关重要。 1. 配置文件查找的顺序 Spring …

【debug记录】有gpu,但是 pytorch仍显示 cpu【原来是新电脑没安装cuda】

原来是新电脑没安装cuda&#xff0c;以为安装了pytorch包就可以了。 检查过程&#xff1a; nvcc 不是内部或外部命令&#xff0c;也不是可运行的程序, 说明没有安装cuda。 查看电脑显卡最高支持cuda版本&#xff1a;nvidia-smi 安装cuda&#xff0c;选择版本&#xff1a;ht…

基于小程序实现的查寝打卡系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;ssm 【…

flink1.18.0 流转表 表转流 jdk17 attachAsDataStream

目的 流表互转 而且流sink 表sink同时存在且都可以输出. 依赖类 package flink.luca.flinkTableAndSQL.Convert;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;@Data @AllArgsConstructor @NoArgsConstructor public class Outer…

gcc/g++ 的使用

————gcc&#xff1a;只能编译c语言 ————g&#xff1a;c和c都可以编译 当然&#xff0c;c语言编译还是推荐gcc。 在学习gcc/g之前&#xff0c;我们要先了解一些知识点&#xff1a; 一、背景知识 1&#xff0c;预处理 gcc -E就是告诉编译器到预处理阶段就停下来&am…

QBoxLayout的addWidget(QWidget * w)会改变w的parent()

示例&#xff1a; 我希望在page_frame对象中使用orders_add_page对象的price变量&#xff0c; 但按照下面这样写得到的price的值都不对。 int price; orders_add_page::orders_add_page(QWidget *parent): QDialog(parent) {ui.setupUi(this);page new page_frame(type, t…

Windows10如何关闭Edge浏览器的Copilot

在Windows10更新后&#xff0c;打开Edge浏览器&#xff0c;无论复制什么内容&#xff0c;都会弹出Copilot人工智能插件&#xff0c;非常令人反感&#xff0c;网上搜索的关闭方法都非常麻烦&#xff0c;比如&#xff1a;组策略和注册表。自己摸索得出最简便有效的关闭方法。 1、…

go语言实现简单登陆样例

目录 1、代码实现样例&#xff1a; 2、postman调用&#xff0c;获取登陆后的token&#xff1a; 1、代码实现样例&#xff1a; package mainimport ("net/http""time""github.com/dgrijalva/jwt-go""github.com/gin-gonic/gin" )var …

【算法】约瑟夫环

文章目录 题目一1.数组模拟1.1出圈顺序递归求出圈顺序 1.2最后出圈人 2.环形链表【DEMO】3.递推求最后出圈人3.13.2 题目二1.数组模拟2.递推求最后出圈人2.12.2 题目一 1-n编号 s开始1-m报数 报到m出圈 求出圈顺序or最后人 1.数组模拟 1.1出圈顺序 递归求出圈顺序 // AC输入…

开源模型应用落地-LangChain高阶-集成vllm-QWen1.5(一)

一、前言 通过langchain框架调用本地模型,使得用户可以直接提出问题或发送指令,而无需担心具体的步骤或流程。vLLM是一个快速且易于使用的LLM推理和服务库。通过两者的结合,可以更好地处理对话,提供更智能、更准确的响应,从而提高对话系统的性能和用户体验。 二、术语 2.…

大语言模型微调过程中的 RLHF 和 RLAIF 有什么区别?

目前想要深入挖掘大型语言模型&#xff08;LLM&#xff09;的全部潜力需要模型与我们人类的目标和偏好保持一致。从而出现了两种方法&#xff1a;来自人类反馈的人力强化学习&#xff08;RLHF&#xff09;和来自人工智能反馈的人工智能驱动的强化学习&#xff08;RLAIF&#xf…

服务器基础知识(2)

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;服务器❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 一、如何选择服务器主机 选择服务器主机时&#xff0c;需要考虑以下几个关键因素&#xff1a; 用途和需…

MYSQL 8.0的Linux - Generic版本安装

1.本文适用范围 适用于MYSQL 8.0的Linux - Generic版本&#xff0c;原则上适用所有的操作系统。已测试的操作系统包括&#xff1a; Ubuntu 16.04Ubuntu 18.04Ubuntu 20.04Ubuntu 22.04Kylin Linux Advanced Server V10 ​ 注意&#xff1a;如果操作系统使用过包管理系统&…

JAVA toString方法详解

hi&#xff0c;我是程序员王也&#xff0c;一个资深Java开发工程师&#xff0c;平时十分热衷于技术副业变现和各种搞钱项目的程序员~&#xff0c;如果你也是&#xff0c;可以一起交流交流。 今天我们来聊聊Java中toString方法~ toString方法的定义 在Java中&#xff0c;toStri…

医院信创FTP要进行替代,有什么值得信赖的方案?

信创产业&#xff0c;即信息技术应用创新产业。其发展核心在于通过行业 应用拉动构建国产化信息技术软硬件底层架构体系和全生命周期生态体系&#xff0c;解决核心技术关键环节“卡脖子”的问题&#xff0c;为中国未来发展奠定坚实的数字基础。 2018 年 以来&#xff0c;受“华…

蓝桥杯2024年第十五届省赛真题-拔河

审题可能会遇到的问题&#xff1a;认为所有人都必须参与拔河&#xff0c;但其实不用&#xff0c;只要符合l1<r1<l2<r2就行&#xff0c;不一定要全部人上场&#xff0c;比如只上场a1和a2他们的力量差是1其实也可以。 正解思路&#xff1a;前缀和枚举二分。枚举左区间&…