【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;
    }
}
相关推荐
Peter_chq2 分钟前
【计算机网络】数据链路层
linux·c语言·开发语言·网络·c++·后端·网络协议
冠位观测者3 分钟前
【Leetcode Top 100】240. 搜索二维矩阵 II
数据结构·算法·leetcode
御风_2113 分钟前
Linux——Uboot命令使用
linux·ubuntu
人工糖精24 分钟前
nfs服务器
linux·运维·服务器
Darkwanderor28 分钟前
迄今为止的排序算法总结
数据结构·c++·算法·排序算法
for_syq32 分钟前
Android res复制脚本
android·linux·服务器
earthzhang202142 分钟前
《深入浅出HTTPS》读书笔记(12):块密码算法之迭代模式
网络协议·算法·http·https·1024程序员节
xxjkkjjkj1 小时前
TCP socket api详解 续
linux·网络
WZF-Sang1 小时前
Linux—进程概念学习-03
linux·运维·服务器·c语言·开发语言·学习·vim
周雨濛1 小时前
通过shell脚本分析部署nginx网络服务
linux·服务器·nginx