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

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

题目链接

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

题目描述


注意点

  • 给定一个 完美二叉树

解答思路

  • 广度优先遍历一层层的遍历二叉树,将每一层节点的next指针都指向右侧节点

代码

class Solution {
    public Node connect(Node root) {
        if (root == null) {
            return null;
        }
        Deque<Node> deque = new ArrayDeque<>();
        deque.addLast(root);
        while (!deque.isEmpty()) {
            int n = deque.size();
            Node currNode = new Node();
            for (int i = 0; i < n; i++) {
                Node nextNode = deque.removeFirst();
                currNode.next = nextNode;
                if (nextNode.left != null) {
                    deque.addLast(nextNode.left);
                }
                if (nextNode.right != null) {
                    deque.addLast(nextNode.right);
                }
                currNode = nextNode;
            }
        }
        return root;
    }
}

关键点

  • 广度优先遍历的思想
  • 注意每层第一个节点和最后一个节点的判断,防止空指针异常

http://www.kler.cn/a/132259.html

相关文章:

  • wpf devexpress Property Grid创建属性定义
  • Oracle OCP / MySQL OCP认证容易通过吗
  • es 算法函数 有点不太懂了没有大神给指点一下
  • 【2】SM2验签工具和RSA验签工具
  • 【漏洞复现】IP-guard WebServer 远程命令执行
  • element el-date-picker报错Prop being mutated:“placement“快速解决方式
  • rviz是如何获取图像里选择的点云的3D坐标的
  • vue3 - pinia 中的 storeToRefs
  • 五、函数的介绍
  • 大数据毕业设计选题推荐-机房信息大数据平台-Hadoop-Spark-Hive
  • 初识MongoDB及安装
  • Struts 类型转换之局部和全局配置
  • Redis:java和SpringBoot中使用Redis
  • 小程序里面循环使用ref的话获取不到
  • java:springboot单元测试spring-boot-starter-test
  • UnoCss(原子化css引擎) 让你的开发更轻松愉快
  • 通信原理板块——奇偶监督码、方阵码、恒比码、正反码
  • 千年TGS服务器日志报错如何解决
  • Typora for Mac:打造全新文本编辑体验
  • 【广州华锐互动】VR技术助力中小学生安全教育,让学生在虚拟世界中学会自我保护!