当前位置: 首页 > news >正文

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

本题使用BFS对二叉树进行搜索,然后将每个节点的next指向右侧节点,当节点为一层的最后也给节点时,将其next指向nullptr。

/*
// 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 != nullptr){que.push(root);}while(!que.empty()){int size = que.size();for(int i = 0; i < size; i++){Node* cur = que.front();que.pop();if(i < size - 1){cur->next = que.front();} else{cur->next = nullptr;}if(cur->left != nullptr){que.push(cur->left);}if(cur->right != nullptr){que.push(cur->right);}}}return root;}
};

第二种写法是利用已经创建好的next指针,由于是完美二叉树,对于同一父亲节点的左右子节点,左节点的next便是右节点,而右节点的next,便是父亲节点 next节点的左子节点。

class Solution {
public:Node* connect(Node* root) {if(root == nullptr){return nullptr;}if(root->left != nullptr){root->left->next = root->right;if(root->next != nullptr){root->right->next = root->next->left;}}connect(root->left);connect(root->right);return root;}
};

相关文章:

  • Vuex3学习笔记
  • Linux fallocate工具用于预分配或释放文件空间的块
  • 应用解析 | 面向智能网联汽车的产教融合解决方案
  • 代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II
  • debian12安装时分区方案
  • 固定数量点云采样算法
  • 物资材料管理系统建设方案(Word)—实际项目方案
  • 【SQLAlChemy】如何定义ORM模型,如何映射到数据库?
  • [vulnhub]Lin.Security主机Linux提权
  • ReactRouter——路由配置、路由跳转、带参跳转、新route配置项
  • 安卓自动化之minicap截图
  • 数据库表中创建字段查询出来却为NULL?
  • C++输入输出与IO流
  • 【启明智显技术分享】sigmastar ssd202d双网口开发板多串口调试说明
  • 进阶篇01——存储引擎
  • 《深入 React 技术栈》
  • bearychat的java client
  • C# 免费离线人脸识别 2.0 Demo
  • Java 网络编程(2):UDP 的使用
  • Java,console输出实时的转向GUI textbox
  • LeetCode29.两数相除 JavaScript
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Median of Two Sorted Arrays
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • ViewService——一种保证客户端与服务端同步的方法
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 闭包--闭包作用之保存(一)
  • 从零开始学习部署
  • 对象引论
  • 开源SQL-on-Hadoop系统一览
  • 力扣(LeetCode)56
  • 七牛云假注销小指南
  • 前端存储 - localStorage
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 由插件封装引出的一丢丢思考
  • 原生 js 实现移动端 Touch 滑动反弹
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • Hibernate主键生成策略及选择
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #define,static,const,三种常量的区别
  • #window11设置系统变量#
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (7)STL算法之交换赋值
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (solr系列:一)使用tomcat部署solr服务
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (九)信息融合方式简介
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决