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

LeetCode 面试经典 150_二叉树_填充每个节点的下一个右侧节点指针 II(73_117_C++_中等)(BFS)

LeetCode 面试经典 150_二叉树_填充每个节点的下一个右侧节点指针 II(73_117_C++_中等)

    • 题目描述:
    • 输入输出样例:
    • 题解:
      • 解题思路:
        • 思路一(BFS):
      • 代码实现
        • 代码实现(思路一(BFS)):

题目描述:

给定一个二叉树:

struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。

初始状态下,所有 next 指针都被设置为 NULL 。

输入输出样例:

示例 1:
输入:root = [1,2,3,4,5,null,7]
输出:[1,#,2,3,#,4,5,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),‘#’ 表示每层的末尾。

示例 2:
输入:root = []
输出:[]

提示:
树中的节点数在范围 [0, 6000] 内
-100 <= Node.val <= 100

题解:

解题思路:

思路一(BFS):

1、通过题意分析,需要一层一层的处理结点,自然的会想到层次遍历对每层进行处理。
2、复杂度分析:
① 时间复杂度:O(N)。我们需要遍历这棵树上所有的点,时间复杂度为 O(N)。
② 空间复杂度:O(N)。即队列的空间代价。

代码实现

代码实现(思路一(BFS)):
class Solution {
public:Node* connect(Node* root) {// 如果根节点为空,直接返回if(root == NULL) {return root;}// 使用队列进行层次遍历queue<Node *> Q;// 把根节点压入队列Q.push(root);// 循环遍历树的每一层int size; // 每次循环时队列的大小表示当前层节点的个数while(!Q.empty()) {size = Q.size(); // 获取当前层的节点数// 遍历当前层的每个节点while(size--) {// 取出队列中的第一个节点Node *curNode = Q.front();Q.pop(); // 弹出队列中的节点// 如果当前节点不是当前层的最后一个节点,设置它的next指针if(size >= 1) {curNode->next = Q.front(); // 将当前节点的next指向队列中的下一个节点}// 如果当前节点有左子节点,压入队列if(curNode->left != NULL) {Q.push(curNode->left);}// 如果当前节点有右子节点,压入队列if(curNode->right != NULL) {Q.push(curNode->right);}}}// 返回修改过的树的根节点return root;}
};

LeetCode 面试经典 150_二叉树_填充每个节点的下一个右侧节点指针 II(73_117)原题链接
欢迎大家和我沟通交流(✿◠‿◠)

http://www.dtcms.com/a/601850.html

相关文章:

  • 玩转 CANN:在 Notebook 中实战 Python 版 ResNet-50
  • 深圳网站建设top028公众号怎么做网站
  • 关于未备案网站网站属性
  • Distributed Architecture: 分布式服务架构演进
  • WPS PPT模板中心:免费模板的查找与使用!
  • Qt 内存管理---创建对象
  • 单页网站还能用吗哪个网站做照片书最好看
  • C语言编译程序与优化技术解析
  • 淄博市住房和城乡建设局官方网站3d模型网
  • Day34-动态规划
  • 衡水网站建设知识做甜品网站的需求分析
  • 千兆网口NET8506与NET8516系列高速数字化仪,为高动态范围信号采集提供了全面的解决方案
  • 小程序开通aso优化分析
  • 拉取github更新到本地
  • wordpress站点搭建怎么做多语言网站
  • 提交异步任务后,无法查询数据库数据问题
  • Redis核心使用场景
  • 普中51单片机学习笔记-按键
  • 学校网站网页建设开题报告书建设网站设计的公司
  • 学习笔记:利用JQuery直接调用asp.net后台方法
  • STM32时钟源分析
  • 文件上传之基础过滤方式
  • Explain 执行计划详解:SQL 性能瓶颈与索引命中分析
  • 汕头网址模板建站广西明电建设有限公司网站
  • 新增目录在vscode git中不可见但git status可见的问题
  • 网站备案信息更改审核要多久智能产品创新设计
  • 大模型加速的其他方法简记
  • Linux C语言编译器的使用与调试技巧
  • [c++]宏函数与内联函数
  • 广州网站定做西安网站开发服务费用