力扣:116. 填充每个节点的下一个右侧节点指针

广度优先搜索解法:

1.该题的解法主要在于给每层节点的下一个右侧节点来进行赋值,所以我们只要再没遍历到每层最后一个节点时都给之前弹出的节点赋上当前对列中队首的节点就解决了这题。

java 复制代码
/*
// Definition for a Node.
class Node {
    public int val;
    public Node left;
    public Node right;
    public Node next;

    public Node() {}
    
    public Node(int _val) {
        val = _val;
    }

    public Node(int _val, Node _left, Node _right, Node _next) {
        val = _val;
        left = _left;
        right = _right;
        next = _next;
    }
};
*/

class Solution {
    public Node connect(Node root) {
        //判断root为零的情况
        if(root==null){
            return root;
        }
        //声明一个队列
        Queue<Node> qu=new LinkedList<Node>();
        //把root的根节点加入队列中
        qu.offer(root);
        //循环进队列和出队列
        while(!qu.isEmpty()){
            //获取队列中的长度
            int size=qu.size();
            //一层一层的遍历每层节点
            for(int i=0;i<size;i++){
                //弹出节点
                Node j=qu.poll();
                //当弹出的节点不是该层的最后一位节点时就进行来连接下一个右侧节点
                if(i!=size-1){
                    j.next=qu.peek();
                }
                //进行弹出节点的下一层左节点的进队列操作
                if(j.left!=null){
                    qu.offer(j.left);
                }
                 //进行弹出节点的下一层右节点的进队列操作
                if(j.right!=null){
                    qu.offer(j.right);
                }
            }
        }
      return root;
    }
}
相关推荐
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
爱敲代码的憨仔1 小时前
《线性代数的本质》
线性代数·算法·决策树
yigan_Eins1 小时前
【数论】莫比乌斯函数及其反演
c++·经验分享·算法
阿史大杯茶2 小时前
AtCoder Beginner Contest 381(ABCDEF 题)视频讲解
数据结构·c++·算法
დ旧言~2 小时前
【高阶数据结构】图论
算法·深度优先·广度优先·宽度优先·推荐算法
张彦峰ZYF2 小时前
投资策略规划最优决策分析
分布式·算法·金融
The_Ticker2 小时前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
Lenyiin3 小时前
02.06、回文链表
数据结构·leetcode·链表
爪哇学长3 小时前
双指针算法详解:原理、应用场景及代码示例
java·数据结构·算法
Dola_Pan3 小时前
C语言:数组转换指针的时机
c语言·开发语言·算法