每日一题算法:2020年9月28日 [填充每个节点的下一个右侧节点指针 II]connect

本文介绍了如何解决填充每个节点的下一个右侧节点指针 II 的问题,采用广度优先搜索算法,通过队列进行二叉树的层次遍历,详细阐述了解题思路和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2020年9月28日 填充每个节点的下一个右侧节点指针 II connect

在这里插入图片描述

/*
// 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) {
        
    }
}

解题思路:

在不考虑进阶的情况下,这道题的就提还是挺简单的,思路是这样的。

使用广度优先算法,广度优先算法的特点就在于我们可以以从上到下,从左到右顺序遍历二叉树,而且每一层之间是分开运算的。

具体流程是这样的,我们先取出根节点,将其放入一个队列中。

然后我们开始下面的这个循环规则。

获取队列的当前长度:1

循环取出该队列的前1个节点。

取出的节点的子节点加入队列。

上面的流程可以做到从上到下从左到右遍历二叉树。

我们在流程中添加一些步骤就能够做到遍历整棵树。

代码实现:
在这里插入图片描述

    public Node connect(Node root) {


        LinkedList<Node> list = new LinkedList<>();
        
        if(null == root)
            return root;
        list.add(root);
        
        while (list.size() != 0){
            int size=list.size();
            
            Node leftNode = null;
            for (int i=0;i<size;i++){
                Node nowNode = list.getFirst();
                if (i == 0){
                    leftNode = nowNode;
                }
                else 
                {
                   leftNode.next =  nowNode;
                    leftNode = nowNode;
                }
                if (null != nowNode.left)
                    list.add(nowNode.left);
                if (null != nowNode.right)
                    list.add(nowNode.right);
                
                list.removeFirst();
            }
        }
        
        return root;
        
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值