2023-11-03 LeetCode每日一题(填充每个节点的下一个右侧节点指针 II)

news2024/11/30 14:53:08

2023-11-03每日一题

一、题目编号

117. 填充每个节点的下一个右侧节点指针 II

二、题目链接

点击跳转到题目位置

三、题目描述

给定一个二叉树:

struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。

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

示例 1:
在这里插入图片描述

示例 2:

在这里插入图片描述
提示:

  • 树中的节点数在范围 [0, 6000] 内
  • -100 <= Node.val <= 100

进阶:

  • 你只能使用常量级额外空间。
  • 使用递归解题也符合要求,本题中递归程序的隐式栈空间不计入额外空间复杂度。

四、解题代码

/*
// 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 {
public:
    Node* connect(Node* root) {
        queue<Node*> q;
        if(root == NULL){
            return root;
        }
        q.push(root);
        while(!q.empty()){
            int len = q.size();
            for(int i = 0 ;i < len; ++i){
                Node* x = q.front();
                q.pop();
                if(x->left != NULL){
                    q.push(x->left);
                }
                if(x->right != NULL){
                    q.push(x->right);
                }
                if(i != len-1){
                    x->next = q.front();
                }
                else{
                    x->next = NULL;
                }
            } 
        }
    return root;
    }
};

五、解题思路

(1) 使用树的层次遍历来解决这个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 11 Home 中启用 Hyper-V

Hyper-V 是微软开发的基于硬件的虚拟机管理程序。它允许用户在 Windows 操作系统之上运行不同操作系统的多个实例。目前&#xff0c;Hyper-V 也支持 Windows、Ubuntu 和其他 Linux 发行版。 如果发现像我这样电脑上启用Hyper-V选项可以按照以下步骤进行操作。 一、新建一个txt…

接上回,如何用 LlamaIndex 搭建聊天机器人?

LlamaIndex 是领先的开源数据检索框架&#xff0c;能够在各种应用中发挥优势&#xff0c;其中一个典型的应用就是在企业内部搭建聊天机器人。 对于企业而言&#xff0c;随着文档数量不断增多&#xff0c;文档管理会变得愈发困难。因此&#xff0c;许多企业会基于内部知识库搭建…

企业办公为什么要选择局域网im即时通讯软件

办公沟通对于企业来说至关重要&#xff0c;而选择局域网IM即时通讯软件作为沟通工具&#xff0c;有以下几个重要原因&#xff1a; 安全性保障&#xff1a;使用局域网IM即时通讯软件&#xff0c;所有的通信数据都在企业内部网络中传输&#xff0c;不会经过公共互联网。这极大地…

C代码内存区域划分

C代码内存区域划分 1、初始化不为零的&#xff08;全局变量、静态全局变量和静态局部变量&#xff09;放在.data段 2、初始化为0&#xff0c;和未初始化的&#xff08;全局变量、静态全局变量和静态局部变量&#xff09;放在.bss 3、编译阶段未初始化的全局变量放在COM块&…

win10、win11解决应用商店、xbox错误代码0x80072efd、0x80131505的方法

文章目录 问题解决方法win10修改方法找到网络和共享中心找到Internet属性点击局域网设置解决后效果 win11的解决方法打开Internet选项找到局域网设置局域网设置 问题 在window上使用win10或者win11自带的系统时&#xff0c;应用商店、xbox报错错误代码0x80072efd、0x80131505。…

【Synopsys工具使用】VCS使用与Makefile脚本调用

文章目录 一、文件导入二、VCS仿真&#xff08;使用可视化界面&#xff09;三、VCS仿真&#xff08;使用Maefile文件&#xff09;3.1 Makefile文件编写3.2 仿真文件编写规范3.3 Makefile文件使用 一、文件导入 新建一个文件夹新建一个文件夹(图中IC_work)   创建一个目录&…

【考研数学】概率论与数理统计 —— 第八章 | 假设检验

文章目录 一、基本概念与原理1. 假设检验2. 两类错误3. 小概率原理与显著性水平 二、假设检验的基本步骤三、一个正态总体均值和方差的假设检验四、两个正态总体的假设检验写在最后 一、基本概念与原理 1. 假设检验 设总体分布已知&#xff0c;但含有未知参数&#xff0c;对总…

学PYTHON必须学算法吗?老程序员告诉你真相!

Python是一种非常流行的编程语言&#xff0c;广泛应用于数据科学、人工智能、Web开发、自动化、脚本编程等各种领域。对于很多Python开发工作&#xff0c;尤其是与应用开发、数据分析和Web开发相关的职位&#xff0c;算法并不是绝对必须的技能。 然而&#xff0c;在某些领域和职…

通过 Hilbert 变换实现单边带调制

目录 简介 双边带调制 单边带调制 理想的 Hilbert 变换 频谱移位器 SSB 调制的高效实现 总结 该例子说明如何使用离散 Hilbert 变换来实现单边带调制。Hilbert 变换可应用于调制器和解调器、语音处理、医学成像、波达方向 (DOA) 测量&#xff0c;以及任何简化设计的复信…

“Redis在分布式系统中的应用与优化“

文章目录 引言一、Redis的简介1. Redis的基本概念2. Redis在分布式系统中的优势 二、Windows、CentOS安装RedisCentOS安装RedisWindows安装Redis 三、Redis的常用命令总结 引言 在当今互联网时代&#xff0c;随着数据量的不断增长和用户访问量的激增&#xff0c;分布式系统的应…

将一个Series序列转化为数据框Dataframe格式Series.to_frame()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将一个Series序列 转化为Dataframe格式 Series.to_frame() [太阳]选择题 关于以下代码的说法中正确的是? import pandas as pd s pd.Series([1,2],name"myValue") print("【显…

【QT】如何理解Widget::Widget(QWidget *parent) :QWidget(parent)

‪qwidget.cpp所在路径&#xff1a;D:\Qt\Qt5.9.9\5.9.9\Src\qtbase\src\widgets\kernel\qwidget.cpp 本文重点&#xff1a;如何理解下面这段代码? 一、类的继承和派生 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>class Widget : public QWidget {…

【PID专题】控制算法PID之微分控制(D)的原理和示例代码

微分&#xff08;D&#xff09;项是PID控制器的一个组成部分&#xff0c;它对系统的控制输出做出反应&#xff0c;以减小系统的过度调节和减小响应的快速变化。微分项的作用是在控制系统中引入一个滞后效应&#xff0c;以帮助系统平稳响应。 以下是微分&#xff08;D&#xff0…

PP-OCRv4-server-det模型训练

PP-OCRv4-server-det项目地址https://aistudio.baidu.com/projectdetail/paddlex/6792800 1、数据校验 2、 模型训练 3、评估测试 4、模型部署

OpenCV实战——OpenCV.js介绍

OpenCV实战——OpenCV.js介绍 0. 前言1. OpenCV.js 简介2. 网页编写3. 调用 OpenCV.js 库4. 完整代码相关链接 0. 前言 本节介绍如何使用 JavaScript 通过 OpenCV 开发计算机视觉算法。在 OpenCV.js 之前&#xff0c;如果想要在 Web 上执行一些计算机视觉任务&#xff0c;必须…

Linux之sched_setscheduler调度策略总结(六十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

CMake:探究编译和编译命令

CMake:探究编译和编译命令 导言项目结构相关源码结果 导言 本篇通过展示如何使用来自对应的Check<LANG>SourceCompiles.cmake标准模块的check_<lang>_source_compiles函数&#xff0c;以评估给定编译器是否可以将预定义的代码编译成可执行文件。该命令可帮助确定:…

Idea 对容器中的 Java 程序断点远程调试

第一种&#xff1a;简单粗暴型 直接在java程序中添加log.info()&#xff0c;根据需要打印信息然后打包覆盖&#xff0c;根据日志查看相关信息 第二种&#xff1a;远程调试 在IDEA右上角点击编辑配置设置相关参数在Dockerfile中加入 "-jar", "-agentlib:jdwp…

数据库连接池大小的调整原则

配置连接池是开发人员经常犯的错误。配置池时需要理解几个原则&#xff08;对于某些人来说可能违反直觉&#xff09;。 想象一下&#xff0c;您有一个网站&#xff0c;虽然可能不是 Facebook 规模的&#xff0c;但仍然经常有 10,000 个用户同时发出数据库请求&#xff0c;每秒…

4.RDD编程指南

概述 spark 提供的重要的抽象是一个 弹性分布式数据集(RDD) &#xff0c;能被并行操作的&#xff0c;在集群上分区的集合元素。RDDs 可以通过 hadoop 文件(或共它的 hadoop 支持的文件系统)&#xff0c;或者编程中的 scala 集合&#xff0c;转换它创建 RDD。用户还可以要求 sp…