LeetCode:116.填充每个节点的下一个右侧节点指针(Java语言)

简介: LeetCode:116.填充每个节点的下一个右侧节点指针(Java语言)

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

给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:

struct Node {

int val;

Node *left;

Node *right;

Node *next;

}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。

初始状态下,所有 next 指针都被设置为 NULL。

示例:

解题思路:

将根节点入队

只要他的左右孩子不为空,则将他的两个孩子入队

同时设置size,监控层序的位置,每到最后位置则将其next指针置为null

代码:

/**
 *作者:魏宝航
 *2020年11月26日,上午7:47
 */
class Solution {
    public Node connect(Node root) {
        if(root==null){
            return null;
        }
        Queue<Node> list=new LinkedList<>();
        list.add(root);
        while(!list.isEmpty()){
            int size=list.size();
            for(int i=0;i<size;i++){
                Node temp=list.poll();
                if(i==size-1){
                    temp.next=null;
                }
                else{
                    temp.next=list.peek();
                }
                if(temp.left!=null){
                     list.add(temp.left);
                }
                if(temp.right!=null){
                     list.add(temp.right);
            }
            }
        }
        return root;
    }
}

执行结果:


目录
相关文章
|
11天前
10_填充每个节点的下一个右侧节点指针
10_填充每个节点的下一个右侧节点指针
|
2月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
40 6
|
2月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
43 1
|
2月前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
40 1
|
2月前
|
Java API
如何在 Java 中填充 Arraylist?
【8月更文挑战第23天】
26 0
|
2月前
|
存储 Java API
如何在 Java 中填充数组列表?
【8月更文挑战第23天】
14 0
|
2月前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
66 0
|
2月前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
47 0
|
2月前
|
存储 算法 Java
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
24 0
|
2月前
|
算法 Java 索引
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
31 0