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

43 阅读1分钟

原题链接

不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油o~

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;
    }
}

执行结果:

这里是引用