【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;
    }
}
相关推荐
qetfw28 分钟前
Debian Chrony 时间同步、RAID5 与 LUKS 磁盘加密配置
linux·debian
苏打豆34 分钟前
CRISP源码阅读——基于ROS2力矩反馈控制器与速度加速度零空间
c++·线性代数·算法·矩阵·机器人
蛋蛋的就会顺顺的1 小时前
hot100——矩阵
java·数据结构·算法·leetcode·力扣
老歌老听老掉牙1 小时前
麻花钻切屑形态演变的力学机制与临界条件分析
python·算法·钻头
zhangfeng11332 小时前
国产GPU/AI算力芯片现状(修订完整版 · 截至2026年9月
人工智能·算法·ai编程·npu
学代码的CJY2 小时前
从代码出发理解时间复杂度与空间复杂度
数据结构·算法
白帽攻防录2 小时前
SRC 挖洞:WSO2 JWT 算法混淆绕过深度复盘,CVE-2026-5430 不支持的算法怎么变成管理员
网络·算法·安全·网络安全·jwt
东城居士3 小时前
Linux驱动阻塞与非阻塞访问的理解
linux·嵌入式系统
..Dauntless..3 小时前
【Linux】进程地址空间初步理解
linux·运维·服务器
小O的算法实验室3 小时前
IEEE TEVC,基于精确与DQN群智能调度方法用于多目标异构USV
算法