leetcode日记(101)填充每个节点的下一个右侧节点指针Ⅱ

server/2025/3/18 2:13:10/

意料之中有这题,将之前的思路换一下即可,层序遍历的思路将record(记录下一个循环的次数)手动加减。

/*
// 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 root;queue<Node*> q;q.push(root);int frequency=1;while(!q.empty()){int record=0;Node* n=NULL;for(int i=0;i<frequency;i++){Node* first=q.front();if(first->left){q.push(first->left);record++;}if(first->right){q.push(first->right);record++;}if(n) n->next=first;n=first;q.pop();record--;}frequency+=record;}return root;}
};

递归方法也差不多,只要"稍改"一点即可。

/*
// 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) {Node* result=root;while(root){Node* record=root->left?root->left:root->right;Node* last=NULL;Node* next=NULL;while(root){if(root->right&&root->left){root->left->next=root->right;}else if(root->right==NULL&&root->left==NULL){root=root->next;if(record==NULL&&root) record=root->left?root->left:root->right;continue;}next=root->left?root->left:root->right;if(last&&next) last->next=next;last=root->right?root->right:root->left;root=root->next;}root=record;}return result;}
};

递归的很容易出错,还是用前面那种方法更好。


http://www.ppmy.cn/server/175832.html

相关文章

IP 协议

文章目录 IP 协议概述数据包格式首部校验和实例分析实例一 分片抓包分析参考 本文为笔者学习以太网对网上资料归纳整理所做的笔记&#xff0c;文末均附有参考链接&#xff0c;如侵权&#xff0c;请联系删除。 IP 协议 概述 IP 协议是 TCP/IP 协议簇中的核心协议&#xff0c;也…

图像处理篇---图像预处理

文章目录 前言一、通用目的1.1 数据标准化目的实现 1.2 噪声抑制目的实现高斯滤波中值滤波双边滤波 1.3 尺寸统一化目的实现 1.4 数据增强目的实现 1.5 特征增强目的实现&#xff1a;边缘检测直方图均衡化锐化 二、分领域预处理2.1 传统机器学习&#xff08;如SVM、随机森林&am…

kafka 中的 rebalance

Kafka 的 Rebalance&#xff08;重平衡&#xff09;机制本质上是一个协调过程&#xff0c;用于在消费者组内动态分配分区&#xff0c;以保证消费任务均匀分布。Rebalance 主要由 Kafka Consumer Group 协议&#xff08;Group Membership Protocol&#xff09;驱动&#xff0c;涉…

[特殊字符] 深度实战:Android 13 系统定制之 Recovery 模式瘦身指南

&#x1f31f; 核心需求 在 Android 13 商显设备开发中&#xff0c;需精简 Recovery 模式的菜单选项&#xff08;如Reboot to bootloader/Enter rescue&#xff09;&#xff0c;但直接修改g_menu_actions后在User 版本出现黑屏卡死问题&#xff0c;需综合方案解决。 &#x1f5…

Flask中的装饰器

在 Flask 中&#xff0c;装饰器&#xff08;Decorator&#xff09;是一种 Python 语法特性&#xff0c;它允许你在不修改原始函数的情况下&#xff0c;扩展其功能。Flask 使用装饰器来定义路由、请求前后钩子、中间件等。 1. Flask 装饰器的基本概念 Python 的装饰器本质上是一…

FPGA学习(二)——实现LED流水灯

FPGA学习(二)——实现LED流水灯 目录 FPGA学习(二)——实现LED流水灯一、DE2-115时钟源二、控制6个LED灯实现流水灯1、核心逻辑2、代码实现3、引脚配置4、实现效果 三、模块化代码1、分频模块2、复位暂停模块3、顶层模块 四、总结 一、DE2-115时钟源 DE2-115板子包含一个50MHz…

DataWhale 大语言模型 - GPT和DeepSeek模型介绍

本课程围绕中国人民大学高瓴人工智能学院赵鑫教授团队出品的《大语言模型》书籍展开&#xff0c;覆盖大语言模型训练与使用的全流程&#xff0c;从预训练到微调与对齐&#xff0c;从使用技术到评测应用&#xff0c;帮助学员全面掌握大语言模型的核心技术。并且&#xff0c;课程…

记第一次跟踪seatunnel的任务运行过程四——getJobConfigParser().parse()的动作

前绪 记第一次跟踪seatunnel的任务运行过程三——解析配置的具体方法getLogicalDag 正文 书接上文 ImmutablePair<List<Action>, Set<URL>> immutablePair getJobConfigParser().parse(null);在前一篇文章中说到getLogicDag()方法的第一行&#xff08;如…