LeetCode刷题日志-117填充每个节点的下一个右侧指针II

在这里插入图片描述

二叉树的题目,我认为二叉树必须要掌握递归的三种遍历算法,以及层序遍历算法才能做二叉树题目。这道题目我的想法是:
因为在二叉树每一层中,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;
        Queue<Node> queue = new LinkedList<Node>();
        queue.offer(root);

        int num = 1;//用于遍历每层的节点数
        int k = 0;//用于计算每层节点数量

        while(true){
            k = 0; //每层开始时置0
            for(int i=0; i < num; i++){ //遍历每层节点

                Node node = queue.poll();//出队一个节点

                if(queue.peek() != null && i != num-1) //如果队列顶还有元素,且不是下一层元素将next指向该节点
                {
                    node.next = queue.peek();
                }else //否则指向空
                {
                    node.next = null;
                }

                if(node.left != null)//加入下层节点
                {
                    queue.offer(node.left);
                    k++;//下层节点数量加1
                }
                if(node.right != null)//加入下层节点
                {
                    queue.offer(node.right);
                    k++;//下层节点数量加1
                }
            }
            if(k == 0)break;//如果下层没有节点,退出循环
            num = k;//赋值给控制遍历的变量
        }
        return root;
    }   
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件价值3-A*算法寻路

A*算法&#xff08;A-star算法&#xff09;是一种启发式搜索算法&#xff0c;主要用于在图或网络中找到从起始节点到目标节点的最佳路径。它结合了Dijkstra算法的广度优先搜索和贪婪最优优先搜索的特点&#xff0c;通过估算从起始节点到目标节点的代价来指导搜索方向。 A*算法…

数据恢复之道:DevicData-P-XXXXXXXX勒索病毒的预防与恢复攻略

尊敬的读者&#xff1a; 随着科技的发展&#xff0c;网络安全问题愈发突出&#xff0c;而勒索病毒作为其中的一种恶意软件&#xff0c;正不断演进成为威胁用户数据安全的严重问题。本文将深入介绍.DevicData-P-XXXXXXXX勒索病毒的特征&#xff0c;提供被感染文件的恢复方法&am…

【Latex】 最全的Latex公式常用符号和文本颜色用法汇总

每次在CSDN写latex公式都没有一个很全的博客能完全覆盖&#xff0c;本文争取汇总Latex使用过程中用到的所有符号和技巧&#xff0c;包括&#xff1a;二元运算与关系符号、大型运算符、数学符号、特殊字符、希腊字母、各种括号和矩阵的编码等。 注意&#xff0c;其他排版主要用…

ov通配符ssl证书申请时间长吗

通配符SSL证书是SSL数字证书的一种&#xff0c;可以同时保护主域名以及同一个域名下的所有子域名。用户在申请通配符SSL证书时需要CA认证机构对提交的信息进行审核&#xff0c;审核时间根据证书的品牌、类型而变化。今天就随SSL盾小编了解OV通配符SSL证书申请时间。 1.通配符S…

深入Pyecharts:桑基图绘制与炫酷效果实战【第38篇—python:桑基图】

文章目录 深入Pyecharts&#xff1a;桑基图绘制与炫酷效果实战桑基图简介安装 Pyecharts简单桑基图的绘制自定义桑基图的炫酷效果高级样式定制 多组数据桑基图的展示动态桑基图的绘制结合真实数据的桑基图案例导出和分享进阶应用&#xff1a;桑基图与其他图表的组合总结 深入Py…

知识点积累系列(四)Kubernetes篇【持续更新】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 知识点积累 系列文章的第四篇&#xff0c;记录日常学习中遇到的 Kubernetes 相关的知识点 1.Kubernetes琐碎知识点 1.1.为什么要有annotations annotation中除了能够记录一些额外信息&#xff0c;还可以解决k…

几种常见的vcruntime140_1.dll无法继续执行代码弹窗错误解决办法

vcruntime140_1.dll是Windows操作系统中的一个动态链接库文件&#xff0c;用于支持C程序和应用程序的运行&#xff0c;有时可能会遇到以下错误信息&#xff1a;“vcruntime140_1.dll无法继续执行代码”。本文将详细介绍这个常见问题的原因&#xff0c;并提供相应的解决办法。 一…

安装 vant-ui 实现底部导航栏 Tabbar

本例子使用vue3 介绍 vant-ui 地址&#xff1a;介绍 - Vant 4 (vant-ui.github.io) Vant 是一个轻量、可定制的移动端组件库 安装 通过 npm 安装&#xff1a; # Vue 3 项目&#xff0c;安装最新版 Vant npm i vant # Vue 2 项目&#xff0c;安装 Vant 2 npm i vantlatest-v…

Linux服务器根据服务端口号杀死对应服务

获取服务pid 输入命令 ss -tulnp | grep :16522输出 tcp 表示连接的类型是TCP。LISTEN 表示端口正在监听连接。第一个数字 0 是 Recv-Q&#xff08;接收队列&#xff09;&#xff0c;表示当前接收队列中已由网络接收但还未被进程读取的数据的数量。第二个数字 128 是 Send-Q&…

使用moment实现数字转秒数和递进分钟和小时

使用moment实现数字转秒数和递进分钟和小时 效果图引用包js 功能&#xff1a;不满一分钟展示秒数&#xff0c;满一分钟展示分秒&#xff0c;满一小时展示时分秒 效果图 引用包 "moment": "^2.24.0", "moment-duration-format": "^2.3.2&q…

springboot+AOP+自定义注解+RBAC自定义操作权限管理01

springbootAOP自定义注解RBAC自定义操作权限管理01!今天 做了内容是该自定义权限管理系统的前奏。第一小节内容。搭建了一个基础的springboot项目&#xff0c;和数据库的三张表。 tb_user;tb_role;tb_roel_user。实现了一个基础的&#xff0c;用户和角色表的联动查询。为了后续…

uniapp如何安装uview

1.下载并导入插件 打开链接 uView2.0重磅发布&#xff0c;利剑出鞘&#xff0c;一统江湖 - DCloud 插件市场 没有的登录的就先登录 导入成功后&#xff0c;可见 2. 添加配置 main.js import uView from /uni_modules/uview-ui Vue.use(uView) uni.scss import /uni_module…

(M)UNITY三段攻击制作

三段攻击逻辑 基本逻辑&#xff1a; 人物点击攻击按钮进入攻击状态&#xff08;bool isAttack&#xff09; 在攻击状态下&#xff0c; 一旦设置的触发器&#xff08;trigger attack&#xff09;被触发&#xff0c;设置的计数器&#xff08;int combo&#xff09;查看目前攻击…

Mastercam 2024 下载安装教程,流程简单,小白也能轻松搞定,附安装包和工具

前言 Mastercam是一款高效专业的实用型CAD/CAM设计辅助工具&#xff0c;集二维绘图、三维实体造型、曲面设计、体素拼合、数控编程、刀具路径模拟及真实感模拟等多种功能于一身&#xff0c;能够帮助用户轻松设计各种复杂的曲线、曲面零件、刀具路径等。 准备工作 1、Win10及…

小米笔记本电脑共享屏幕到苹果手机,这里有两个方法

相信大家都知道苹果手机投屏到小米笔记本电脑的方法&#xff0c;今天分享一下将电脑投屏到苹果手机的操作。 你可以选择安装软件或不安装软件。 安装软件的方法&#xff1a; 第一步&#xff0c;在小米笔记本电脑和苹果手机都安装AirDroid Cast&#xff0c;两台设备连接同一个网…

Linux/ScriptKiddie

Enumeration nmap 第一次扫描发现系统对外开放了22和5000端口&#xff0c;端口详细信息如下 22端口运行着openssh&#xff0c;5000端口则是werkzeug的httpd&#xff0c;tittle是kids hacker tools TCP/5000 首先从5000端口开始&#xff0c;先访问站点&#xff0c;站点是一个…

码多多ChatAI智能聊天系统:打造智能营销

产品介绍: 码多多ChatAI智能聊天系统是一款基于人工智能技术的聊天机器人&#xff0c;具备自然语言处理、情感识别和多轮对话能力。该系统可应用于客户服务、营销推广和市场调查等领域&#xff0c;提供实时、高效的人工智能交互体验。同时&#xff0c;码多多ChatAI支持个性化定…

2024美赛数学建模C题思路+代码

文章目录 1 赛题思路2 美赛比赛日期和时间3 赛题类型4 美赛常见数模问题5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 美赛比赛日期和时间 比赛开始时间&#xff1a;北京时间2024年2月2日&#xff08;周五&#xff…

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏3(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言库存系统素材绘制简单的库存UI控制库存开关实现物品拖拽功能拾取物品添加更多物品 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏…

Linux实验记录:远程控制服务

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; SSH&#xff08;Secure Shell&…