【LeetCode-中等题】116. 填充每个节点的下一个右侧节点指针

文章目录

题目

方法一:直接让每层不是最后一个的节点指向此时队首元素

java 复制代码
class Solution {
    public Node connect(Node root) {
        if(root == null) return null;
        Deque<Node> queue = new LinkedList<>();
        Node node = root;
        queue.offer(node);
        List<Node> list = null;
        while(!queue.isEmpty()){
            int size = queue.size();
            list = new ArrayList<>();
            for(int i = 0 ; i < size ; i++){
                node = queue.poll();
                //第二种链接方法  :  直接让每层不是最后一个的节点指向此时队首元素
                if(i == size - 1) node.next = null;//每层最后一个指向 null
                else node.next = queue.peek();//不是最后一个的节点指向此时队首元素
                if(node.left != null) queue.offer(node.left);
                if(node.right != null) queue.offer(node.right);
            }
        }
        return root;
    }
}

方法二:用list记录下每层的节点 然后再做链接

java 复制代码
class Solution {
    public Node connect(Node root) {
        if(root == null) return null;
        Deque<Node> queue = new LinkedList<>();
        Node node = root;
        queue.offer(node);
        List<Node> list = null;
        while(!queue.isEmpty()){
            int size = queue.size();
            list = new ArrayList<>();
            for(int i = 0 ; i < size ; i++){
                node = queue.poll();
                list.add(node);
                if(node.left != null) queue.offer(node.left);
                if(node.right != null) queue.offer(node.right);
            }
            //第一种方法 : 用list记录下每层的节点  然后再做链接
            for(int i = 0 ; i < list.size() ; i++){
                if(i == list.size()-1) list.get(i).next = null;
                else list.get(i).next = list.get(i+1);
            }
        }
        return root;
    }
}
相关推荐
啊阿狸不会拉杆几秒前
人工智能数学基础(一):人工智能与数学
人工智能·python·算法
一捌年4 分钟前
java排序算法-计数排序
数据结构·算法·排序算法
和煦的春风10 分钟前
案例分析 | SurfaceFlinger 大片Runnable引起的卡顿
android·linux
freexyn36 分钟前
Matlab自学笔记五十二:变量名称:检查变量名称是否存在或是否与关键字冲突
人工智能·笔记·算法·matlab
涵信1 小时前
第十二节:性能优化高频题-shallowRef/shallowReactive使用场景
linux·ubuntu·性能优化
老秦包你会1 小时前
Linux课程五课---Linux进程认识1
linux·运维·服务器
渭雨轻尘_学习计算机ing1 小时前
二叉树构建算法全解析
算法·程序员
浩浩测试一下1 小时前
网络安全实战指南:从安全巡检到权限维持的应急响应与木马查杀全(命令查收表)
linux·安全·web安全·ubuntu·网络安全·负载均衡·安全架构
我想吃余2 小时前
Linux学习笔记(一):Linux下的基本指令
linux·笔记·学习
蒟蒻小袁2 小时前
力扣面试150题--K 个一组翻转链表
leetcode·链表·面试