【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;
    }
}
相关推荐
Everbrilliant897 分钟前
Ubuntu系统下交叉编译Android的X265库
linux·运维·ubuntu·x265交叉编译·android x265·ffmpeg x265
我不要放纵15 分钟前
LVS集群搭建
linux·服务器·lvs
橙几19 分钟前
击败了90%的解法?Two Sum 从 O(n²) 到 O(n) 的优化之路
算法
阿巴~阿巴~20 分钟前
自主Shell命令行解释器
linux·运维·服务器
许白掰20 分钟前
Linux入门篇学习——借助 U 盘或 TF 卡拷贝程序到开发板上
linux·学习·借助 u 盘拷贝程序到开发板上·借助 tf卡拷贝程序到开发板上
叶子爱分享33 分钟前
经典排序算法之归并排序(Merge Sort)
算法·排序算法
珹洺39 分钟前
C++算法竞赛篇:DevC++ 如何进行debug调试
java·c++·算法
Norvyn_71 小时前
LeetCode|Day18|20. 有效的括号|Python刷题笔记
笔记·python·leetcode
呆呆的小鳄鱼1 小时前
leetcode:冗余连接 II[并查集检查环][节点入度]
算法·leetcode·职场和发展
墨染点香1 小时前
LeetCode Hot100【6. Z 字形变换】
java·算法·leetcode