【LeetCode】No.116. Populating Next Right Pointers in Each Node -- Java Version

news2024/11/17 19:39:08

题目链接:https://leetcode.com/problems/populating-next-right-pointers-in-each-node/description/

1. 题目介绍()

You are given a perfect binary tree where all leaves are on the same level, and every parent has two children. The binary tree has the following definition:

【Translate】: 给你一个完美的二叉树,所有的叶结点都在同一层,每个父结点都有两个子结点。二叉树的定义如下:

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

Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.

【Translate】: 填充每个next指针,使其指向它右边的下一个节点。如果没有下一个右节点,则下一个指针应设置为NULL

Initially, all next pointers are set to NULL.

【Translate】: 最初,所有的next指针都被设置为NULL

【测试用例】:

示例1:
testcase1

示例2:
testcase2

【条件约束】:

Constraints

【跟踪】:

Follow-up:

  • You may only use constant extra space.
  • The recursive approach is fine. You may assume implicit stack space does not count as extra space for this problem.

【Translate】:

  • 只使用常数的额外空间。
  • 递归方法很好。对于这个问题,您可以假设隐式堆栈空间不算作额外空间。

【相似问题】:

related

2. 题解

2.1 层序遍历

该题解是在 【LeetCode】No.102. Binary Tree Level Order Traversal – Java Version 的基础上,稍作修改得到的,通过Queue来实现BFS,保证queue每次只存储当前层元素,当前元素通过弹出获得,next元素查询但不弹出,直到最后元素后,让其next为null.

/*
// 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;

        Queue<Node> queue = new LinkedList<>();
        queue.add(root);

        while(!queue.isEmpty()){
            int qlen = queue.size();

            for(int i = 0; i < qlen; i++){
                Node curr = queue.poll();
                Node second = queue.peek();
                curr.next = second;
                if(i == qlen-1){
                    curr.next = null;
                }
                if(curr.left != null) queue.add(curr.left);
                if(curr.right != null) queue.add(curr.right);
            }
        }
        return root;
    }
}

act1

2.2 递归

原题解来自于 wilsoncursino 的 Java 0ms with visual explanation.

xmind

不得不说,这确实是一个很巧妙的办法,对代码有疑惑的同学看一下上面的图应该就能很容易理清思路了。

/*
// 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;
        if(root.right != null && root.next != null) root.right.next = root.next.left;
        connect(root.left);
        connect(root.right);
        return root;
    }
}

act2

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

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

相关文章

安卓APP源码和设计报告——小说阅读器

班级 姓名 学号 答辩情况 考核项满分成绩得分掌握计算机系统软硬件资源管理的原理&#xff0c;能够设计针对计算机领域复杂工程问题的解决方案&#xff0c;设计满足特定需求的软硬件系统&#xff0c;并具有对解决方案在特定约束条件下进行工程设计和开发的能力。30能够针对计…

Excel 函数大全之 INTERCEPT function 获取线性回归线的截距

描述 使用现有的 x 值和 y 值计算直线与 y 轴相交的点。截点基于通过已知 x 值和已知 y 值绘制的最佳拟合回归线。当您想要在自变量为 0(零)时确定因变量的值时,请使用 INTERCEPT 函数。例如,当您的数据点是在室温或更高温度下获取的时,您可以使用 INTERCEPT 函数预测金属…

BIGEMAP APP导入/导出文件\照片(kml\shp\cad(dxf)\txt\excel)

APP数据导入&#xff1a; 1、kml\bmv文件通过QQ、微信等发送到手机端&#xff0c;在手机端下载文件&#xff0c;然后选择其他应用打开&#xff0c;选择bigemap打开就可以了。 2、其他数据导入&#xff08;其他数据包括&#xff1a;shp、kml\kmz、CAD的dxf、txt、excel、csv等…

java通过idea进行远程调试

1&#xff0c;基于SpringBoot使用IDEA工具 在pom.xml中配置 里配置jvmArguments参数 -Xdebug -Xrunjdwp:transportdt_socket,address8008,servery,suspendn&#xff1a; <build><plugins><plugin><groupId>org.springframework.boot</groupId>…

MySQL是怎样加锁的

是不是很多人都对 MySQL 加行级锁的规则搞的迷迷糊糊&#xff0c;对记录一会加的是 next-key 锁&#xff0c;一会加是间隙锁&#xff0c;一会又是记录锁。这次就带大家浅浅地聊一下MySQL是怎样加锁的。 什么 SQL 语句会加行级锁&#xff1f; InnoDB 引擎是支持行级锁的&#…

第十二章 Golang家庭收支记账软件项目

1.项目开发流程 2.项目需求说明 模拟实现基于文本界面的《家庭记账软件》该软件能够记录家庭的收入&#xff0c;支出&#xff0c;并能够打印收支明细表 3.项目的界面 4.项目代码实现 实现基本功能&#xff08;先使用面向过程&#xff0c;后面改成面向对象&#xff09; 功能1…

【Shell 脚本速成】10、Shell 流程控制 while 循环

目录 一、while 介绍 1.1 while 语法 二、while 与 shell 运算 2.1 比较运算 2.2 逻辑运算 2.3 文件类型判断 2.4 特殊条件 三、while 与循环控制语句 3.1 sleep 语句 3.2 break 3.3 continue 四、while 嵌套其他语句 4.1 while 嵌套 if 4.2 while 嵌套 for 4.…

XSKY星晨天合-后台开发岗

一面 TCP与UDP区别UDP的优点&#xff08;实时性好&#xff0c;占用资源低&#xff0c;无需三次握手较少被黑客利用的机会&#xff09;UDP增加哪些功能可以实现更可靠、更稳定、且保证有序&#xff08;超时重传、滑动窗口流量控制、序号/确认序号&#xff0c;面试官提到了kcp&a…

使用HTML制作静态宠物网站——蓝色版爱宠之家(HTML+CSS)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【ES6】阮一峰ES6学习(六) Proxy(一)

Proxy1. 前言2. 使用1. get()方法2. set()方法未完待续1. 前言 es6中全新设计了一个叫Proxy的类型&#xff0c;Proxy这个词的原意是代理&#xff0c;用在这里表示由它来”代理“某些操作&#xff0c;可以译为”代理器“&#xff0c;Proxy就是专门为对象设置访问代理器的&#…

【1775. 通过最少操作次数使数组的和相等】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间&#xff08;包含 1 和 6&#xff09;。 每次操作中&#xff0c;你可以选择 任意 数组中的任意一个整数&…

1978-2021年全国GDP平减指数计算模板

全国GDP平减指数计算公式可以给定基期&#xff0c;自动计算平减指数&#xff01; 1、时间区间&#xff1a;1978-2021年 2、计算说明&#xff1a;GDP平减指数名义GDP/实际GDP 实际GDP又称不变价GDP&#xff0c;名义GDP就是公布的数字&#xff0c;它没有考虑通货膨胀因素。 给…

【Unity】UnityWebRequest学习——Unity中的HTTP网络通信

目录UnityWebRequest 简介HTTP网络通信流程HTTP 三点注意事项HTTP请求HTTP响应例子使用Unity内置的UnityWebRequest类进行HTTP请求&#xff08;GET&#xff09;使用BestHTTP插件进行HTTP请求&#xff08;GET&#xff09;使用Unity内置的UnityWebRequest类进行HTTP请求&#xff…

主成分分析/因子分析与线性映射

数据降维&#xff0c;包括主成分分析PCA和因子分析FA&#xff0c;都离不开特征值和特征向量。今天先不细说特征值和特征向量&#xff0c;先说一说理解数据降维的一个关键概念&#xff0c;线性映射。 看到csdn里很多文章讲特征值与特征向量时&#xff0c;都会先讲讲线性映射&am…

绿色荧光试剂Fluorescein Tyramide,荧光素酪胺,210236-90-1

CAS编号为210236-90-1的化学试剂其英文名为Fluorescein Tyramide&#xff0c;其中文名称为荧光素酪胺&#xff0c;它是一种绿色荧光染料。 该荧光试剂的分子量是495.49 &#xff0c;分子式为C29H21NO7。该试剂质量控制为95%&#xff0c;试剂的储存条件为&#xff1a; -20℃长期…

维二糖-聚乙二醇-酰基,Cellobiose-PEG-Hydrazide,酰基-PEG-纤维二糖

维二糖-聚乙二醇-酰基&#xff0c;Cellobiose-PEG-Hydrazide&#xff0c;酰基-PEG-纤维二糖 中文名称&#xff1a;纤维二糖-酰基 英文名称&#xff1a;Cellobiose-Hydrazide 别称&#xff1a;生物素修饰纤维二糖&#xff0c;生物素-纤维二糖 酰基(acyl group)&#xff0c;是…

[附源码]计算机毕业设计框架的资产管理系统设计与实现Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Linux学习笔记——初识Linux

01、初识Linux 1.1、操作系统概述 1、学习目标&#xff1a; 了解操作系统的作用了解常见的操作系统 2、硬件和软件 我们所熟知的计算机是由硬件和软件组成的。 硬件&#xff1a;计算机系统中由电子、机械和光电元件等组成的各种物理装置的总称。&#xff08;看的见、摸得…

基于jsp+mysql+SSM动物园门票预订网站系统-计算机毕业设计

项目介绍 现代化动物园管理系统日趋复杂&#xff0c;传统的以手工方式为主的管理操作模式&#xff0c;局限性日趋突显&#xff1a;宣传手段单一&#xff0c;管理效率低,系统采用了jsp的mvc框架,SSM(springMvcspringMybatis)框架进行开发,本系统使用mysql&#xff0c;独立运行,…

保姆级 | Python设置py2和py3共存

0x00 前言 在使用一些 python 脚本时&#xff0c;有些库只能用 python2.X 版本进行使用&#xff0c;而有些脚本却需要 python3.X 版本进行。如果不能在一个主机中设置 py2 和 py3 共存&#xff0c;那么会对自身的工作造成极大的不便。 0x01 环境说明 python-2.7.18python-3.11…