162.二叉树:填充每个节点的下一个右侧节点指针(力扣)

代码解决
/* // 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*> que; // 定义队列用于层次遍历if (root != NULL) que.push(root); // 如果根节点不为空,则将根节点加入队列while (!que.empty()) // 当队列不为空时,继续处理{int size = que.size(); // 获取当前层的节点数量Node* node; // 当前处理的节点Node* prenode; // 前一个处理的节点for (int i = 0; i < size; i++) // 遍历当前层的每一个节点{if (i == 0) // 如果是当前层的第一个节点{prenode = que.front();que.pop();node = prenode;}else // 如果不是当前层的第一个节点{node = que.front();que.pop();prenode->next = node; // 将前一个节点的 next 指向当前节点prenode = prenode->next;}if (node->left) que.push(node->left); // 如果该节点有左子节点,将其加入队列if (node->right) que.push(node->right); // 如果该节点有右子节点,将其加入队列}prenode->next = NULL; // 当前层的最后一个节点的 next 设为 NULL}return root; // 返回根节点} };测试代码
#include <iostream> #include <vector> #include <queue>using namespace std;// 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) {if (root == NULL) return NULL; // 如果根节点为空,直接返回 NULLqueue<Node*> que; // 定义队列用于层次遍历que.push(root); // 将根节点加入队列while (!que.empty()) // 当队列不为空时,继续处理{int size = que.size(); // 获取当前层的节点数量Node* prenode = NULL; // 前一个处理的节点,初始化为 NULLfor (int i = 0; i < size; i++) // 遍历当前层的每一个节点{Node* node = que.front(); // 从队列中取出一个节点que.pop(); // 将该节点从队列中移除if (prenode != NULL) {prenode->next = node; // 将前一个节点的 next 指向当前节点}prenode = node; // 更新前一个节点为当前节点if (node->left) que.push(node->left); // 如果该节点有左子节点,将其加入队列if (node->right) que.push(node->right); // 如果该节点有右子节点,将其加入队列}prenode->next = NULL; // 当前层的最后一个节点的 next 设为 NULL}return root; // 返回根节点} };// 辅助函数:创建一个测试树 Node* createTestTree() {Node* root = new Node(1);root->left = new Node(2);root->right = new Node(3);root->left->left = new Node(4);root->left->right = new Node(5);root->right->left = new Node(6);root->right->right = new Node(7);return root; }// 辅助函数:打印树的每一层 void printTreeByLevel(Node* root) {Node* levelStart = root;while (levelStart != NULL) {Node* current = levelStart;levelStart = NULL;while (current != NULL) {cout << current->val << " ";if (!levelStart) {if (current->left) levelStart = current->left;else if (current->right) levelStart = current->right;}current = current->next;}cout << "-> NULL" << endl;} }int main() {Solution solution;Node* root = createTestTree();root = solution.connect(root);printTreeByLevel(root); // 打印连接后的树的每一层return 0; }
相关文章:
162.二叉树:填充每个节点的下一个右侧节点指针(力扣)
代码解决 /* // 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* _…...
NLP(20)--知识图谱+实体抽取
前言 仅记录学习过程,有问题欢迎讨论 基于LLM的垂直领域问答方案: 特点:不是通用语料;准确度要求高,召回率可以低(转人工);拓展性和可控性(改变特定内容的回答…...
【mysql数据库】mycat中间件
MyCat 简介 Mycat 是数据库 中间件 。 1、 数据库中间件 中间件 是一类连接软件组件和应用的计算机软件, 以便于软件各部件之间的沟通 。 例子 Tomcat web 中间件 。 数据库 中间件 连接 java 应用程序和数据库 2、 为什么要用 Mycat ① Java 与数据库紧耦合 …...
满帮集团 Eureka 和 ZooKeeper 的上云实践
作者:胡安祥 满帮集团,作为“互联网物流”的平台型企业,一端承接托运人运货需求,另一端对接货车司机,提升货运物流效率。2021 年美股上市,成为数字货运平台上市第一股。根据公司年报,2021 年&a…...
ubuntu中彻底删除mysql (配置文件删除可选)
ubuntu中彻底删除mysql (配置文件删除可选) 对于此类即搜即用的分享文章,也不过多赘述,直接依次按照下面的操作执行即可: 一、删除 mysql 数据文件 sudo rm /var/lib/mysql/ -R二、删除 mysql 配置文件 sudo rm /etc/mysql/ -R三、查看 m…...
根据模板和git commit自动生成日·周·月·季报
GitHub - qiaotaizi/dailyreport: 日报生成器 GitHub - yurencloud/daily: 程序员专用的日报、周报、月报、季报自动生成器! config.json: { "Author": "gitname", "Exclude": ["update:", "add:", "…...
matlab GUI界面设计
【实验内容】 用MATLAB的GUI程序设计一个具备图像边缘检测功能的用户界面,该设计程序有以下基本功能: (1)图像的读取和保存。 (2)设计图形用户界面,让用户对图像进行彩色图像到灰度图像的转换…...
MyBatis 面试题
一、什么是 Mybatis? 1、Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时 只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性 能,灵活度高。 …...
C#根据数据量自动排版标签的样例
这是一个C#根据数据量自动排版标签的样例 using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using HslCommuni…...
【网络安全】Web安全基础 - 第一节:使用软件及环境介绍
VMware VMware,是全球云基础架构和移动商务解决方案的佼佼者。 VMware可是一个总部位于美国加州帕洛阿尔托的计算机虚拟化软件研发与销售企业呢。简单来说,它就是通过提供虚拟化解决方案,让企业在数据中心改造和公有云整合业务上更加得心应…...
Mac下载docker
先安装homebrew Mac下载Homebrew-CSDN博客 然后输入以下命令安装docker brew install --cask --appdir/Applications docker 期间需要输入密码。输入完等待即可...
k8s_设置dns
配置k8s dns 在 Kubernetes 集群中,CoreDNS 是默认的 DNS 服务器,它负责处理集群内所有的 DNS 请求。 kubectl edit cm coredns -n kube-system (此命令修改coredns 配置) kubectl describe cm coredns -n kube-system(此命令查看coredns 配…...
翻译《The Old New Thing》- What a drag: Dragging a virtual file (HGLOBAL edition)
What a drag: Dragging a virtual file (HGLOBAL edition) - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080318-00/?p23083 Raymond Chen 2008年03月18日 拖拽虚拟文件(HGLOBAL 版本) 现在我们已经对简单的数据…...
SA316系列音频传输模块-传输距离升级音质不打折
SA316是思为无线研发的一款远距离音频传输模块,音频采样率为48K,传输距离可达200M。为了满足更多用户需求,思为无线在SA316基础上进一步增加传输距离推出SA316F30。相比SA316性能,同样其采用48K采样,-96dBm灵敏度&…...
【机器学习】智能选择的艺术:决策树在机器学习中的深度剖析
在机器学习的分类和回归问题中,决策树是一种广泛使用的算法。决策树模型因其直观性、易于理解和实现,以及处理分类和数值特征的能力而备受欢迎。本文将解释决策树算法的概念、原理、应用、优化方法以及未来的发展方向。 🚀时空传送门 &#x…...
电脑缺少运行库,无法启动程序
在我们使用一些软件的时候,由于电脑缺少一些运行库,导致无法启动应用软件,此时需要我们安装缺少的运行库。 比如当电脑提示: Cannot load library Qt5Xlsx.dll 我们就需要下载C得运行库,以满足软件运行需要。 下载链…...
【计算机软考_初级篇】每日十题2
各位老师大家好,软考对于日常的知识储备和企业中的考试,或者说在校大学生来说,那用处是非常大的!!那么下面我们进入正题,软考呢是分两种语言,java和C,对于其他语言目前还没ÿ…...
HR人才测评,如何做营销人员岗位素质测评?
营销人员是企业中的重要角色,他们直接负责企业产品或服务的销售和推广,是企业中最直接影响销售业绩的人才之一。因此,营销人员的基本素质测评非常重要,能够有效评估营销人员的能力和潜力,为企业招聘和培养优秀的营销人…...
LabVIEW调用第三方硬件DLL常见问题及开发流程
在LabVIEW中调用第三方硬件DLL时,除了技术问题,还涉及开发流程、资料获取及与厂家的沟通协调。常见问题包括函数接口不兼容、数据类型转换错误、内存管理问题、线程安全性等。解决这些问题需确保函数声明准确、数据类型匹配、正确的内存管理及线程保护。…...
datax实现MySQL数据库迁移shell自动化脚本
datax实现MySQL数据库迁移 (1)生成python脚本 # codingutf-8 import json import getopt import os import sys import MySQLdb#MySQL相关配置,需根据实际情况作出修改 mysql_host "xxxx" mysql_port "3306" mysql_u…...
MogFace人脸检测工具实操案例:从监控截图提取人脸ROI用于后续关键点分析
MogFace人脸检测工具实操案例:从监控截图提取人脸ROI用于后续关键点分析 1. 引言:从监控画面到精准分析 想象一下,你手头有一堆从监控摄像头截取的图片,里面可能有多个人脸,有的正对着镜头,有的侧着脸&am…...
保姆级教程:在Android项目中集成微信Matrix性能监控框架(含避坑指南)
Android性能监控实战:微信Matrix框架深度集成指南 在移动应用开发领域,性能优化始终是开发者面临的核心挑战之一。微信开源的Matrix框架作为一套全平台性能监控工具链,为Android开发者提供了从方法耗时、ANR检测到内存泄漏分析等全方位的监控…...
ofa_image-caption_coco_distilled_en快速部署教程:7860端口WebUI调用全流程详解
ofa_image-caption_coco_distilled_en快速部署教程:7860端口WebUI调用全流程详解 本文介绍如何快速部署和使用ofa_image-caption_coco_distilled_en模型,这是一个专门用于为图片生成英文描述的AI系统。通过简单的Web界面,任何人都能轻松上传图…...
3D Face HRN效果验证:使用MeshLab量化评估3D重建PSNR与SSIM指标
3D Face HRN效果验证:使用MeshLab量化评估3D重建PSNR与SSIM指标 1. 项目背景与验证意义 3D人脸重建技术近年来取得了显著进展,但如何客观评估重建质量一直是个关键问题。传统的主观视觉评估方法存在明显局限性——不同观察者可能有不同的判断标准&…...
Qwen3-ForcedAligner-0.6B在字幕制作中的落地应用:SRT自动导出全流程
Qwen3-ForcedAligner-0.6B在字幕制作中的落地应用:SRT自动导出全流程 1. 引言:告别手动打轴,让字幕制作快10倍 如果你做过视频字幕,一定体会过手动打轴的痛苦。一集45分钟的视频,台词稿早就准备好了,但你…...
Leaflet图层顺序实战:如何用setZIndex和bringToFront让你的地图层级不再混乱
Leaflet图层顺序实战:如何用setZIndex和bringToFront让你的地图层级不再混乱 当地图上同时存在多个图层时,你是否遇到过标注被底图遮盖、动态添加的标记消失在多边形下方,或是图层叠加顺序完全失控的情况?这些看似简单的层级问题&…...
4个维度解析Lenovo Legion Toolkit:游戏本性能管理的轻量革命
4个维度解析Lenovo Legion Toolkit:游戏本性能管理的轻量革命 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 1.…...
Hunyuan-MT-7B开源镜像免配置部署:像素语言传送门一键启动教程(含GPU适配)
Hunyuan-MT-7B开源镜像免配置部署:像素语言传送门一键启动教程(含GPU适配) 1. 项目介绍 像素语言跨维传送门是一款基于Tencent Hunyuan-MT-7B大模型构建的创新翻译工具。它将传统翻译体验重构为16-bit像素冒险风格,让语言转换变…...
单细胞测序入门(一):技术概览与数据获取实战
1. 单细胞测序技术全景解读 第一次接触单细胞测序时,我被这项技术的精妙设计深深震撼。想象一下,传统测序就像把水果榨成混合果汁检测成分,而单细胞测序则是把每个苹果、香蕉、葡萄分开榨汁分析——这就是单细胞分辨率带来的革命性视角。 核心…...
颠覆传统投资分析:TradingAgents-CN智能交易系统零门槛部署指南
颠覆传统投资分析:TradingAgents-CN智能交易系统零门槛部署指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 在金融科技迅猛发展的…...
