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

[leetcode hot 150]第一百一十七题,填充每个节点的下一个右侧节点

题目:
 

给定一个二叉树:

struct Node {int val;Node *left;Node *right;Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。

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

 

可以使用层序遍历来解决这个问题。基本思路是:

  1. 使用队列进行层序遍历
  2. 对于每一层,将该层的节点连接起来
  3. 最后一个节点的next保持为null
  1. 首先,检查root是否为null。如果是,直接返回null。
  2. 创建一个队列来进行层序遍历。
  3. 使用一个while循环来遍历每一层。
  4. 对于每一层,先获取该层的节点数量(levelSize)。
  5. 然后,遍历该层的每个节点:
    • 将节点从队列中取出
    • 如果不是该层的最后一个节点,就将其next指向队列的下一个节点
    • 如果该节点有左子节点,将左子节点加入队列
    • 如果该节点有右子节点,将右子节点加入队列
  6. 重复这个过程,直到队列为空。
  7. 最后,返回root节点。
public static TreeNode connect(TreeNode root) {if (root == null) return null;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {int levelSize = queue.size();for (int i = 0; i < levelSize; i++) {TreeNode node = queue.poll();if (i < levelSize - 1) {node.next = queue.peek();}if (node.left != null) {queue.offer(node.left);}if (node.right != null) {queue.offer(node.right);}}}return root;
}

 

http://www.lryc.cn/news/393480.html

相关文章:

  • Docker 入门篇(十 一)-- 网络配置总结
  • 【Android面试八股文】Android 有哪些存储数据的方式?
  • 3. train_encoder_decoder.py
  • Hyper-V克隆虚拟机教程分享!
  • QDockWidget类详解
  • vue3.0(十六)axios详解以及完整封装方法
  • Python用于处理 DNS 查询库之Dnspython 使用详解
  • Django ORM 中过滤 JSON 数据
  • 深入探索C语言中的结构体:定义、特性与应用
  • EDEM-FLUENT耦合报错几大原因总结(持续更新)
  • ctfshow sql注入 web234--web241
  • Python的招聘数据分析与可视化管理系统-计算机毕业设计源码55218
  • 使用ChatGPT写学术论文的技巧和最佳实践指南
  • 多模态图像引导手术导航进展
  • 小程序 全局数据共享 getApp()
  • 第一次面试的经历(java开发实习生)
  • GitHub Copilot API
  • CobaltStrike的内网安全
  • Linux之进程控制(下)
  • Mac搭建anaconda环境并安装深度学习库
  • Linux:文件系统与日志分析
  • 迈阿密色主题学科 HTML5静态导航源码
  • Qt 基础组件速学 鼠标和键盘事件
  • 【踩坑】解决undetected-chromedriver报错cannot connect to-chrome
  • PyCharm 2024.1 版本更新亮点:智能编程,高效协作
  • 网络安全设备——蜜罐
  • Java与Selenium配置及常见报错解决方法
  • 最新扣子(Coze)实战案例:使用图像流做超分,模糊图片秒变清晰,完全免费教程
  • 数组相关内容
  • 【Python机器学习】模型评估与改进——打乱划分交叉验证