You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode 117题BFS解法出现诡异队列大小异常问题求助

解决LeetCode 117. 填充每个节点的下一个右侧节点指针 II时的队列异常问题

给定一棵二叉树

struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

填充每个节点的next指针,使其指向右侧相邻节点。若没有右侧相邻节点,next指针设为NULL。初始时所有next指针均为NULL。

示例1:填充后二叉树的每个节点next指针指向同层右侧节点,最右侧节点的next为NULL。

我实现了一个简单的BFS解法,但第一个测试用例失败。诡异的是,根据输出,第三次while循环结束时队列大小为0,但第四次循环检查队列时,它竟神奇地变成了1!

以下是我的代码及输出:

/*
// 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) {
        Queue<Node> queue = new LinkedList<>();
        queue.offer(root);
        while(!queue.isEmpty()){
            int size = queue.size();
            System.out.println("-");
            System.out.printf("size: %d%n",  queue.size());
            for(int i=0; i<size-1; i++){
                Node curr = queue.poll();
                System.out.println("poll");
                curr.next = queue.peek();
                if(curr.left != null){
                    System.out.println(curr.left.val);
                    queue.offer(curr.left);
                } 
                if(curr.right != null){
                    System.out.println(curr.right.val);
                    queue.offer(curr.right);
                } 
            }
            Node last = queue.poll();System.out.println("poll");
            // System.out.println(last.val);
            last.next = null;
            System.out.printf("size: %d%n",  queue.size());
            if(last.left != null){
                System.out.println(last.left.val);
                queue.offer(last.left);
            } 
            System.out.printf("size: %d%n",  queue.size());
            if(last.right != null){
                System.out.println(last.right.val);
                queue.offer(last.right);
            } 
            System.out.printf("size: %d%n",  queue.size());
        }
        return root;
    }
}

输出结果:

-
size: 1
poll
size: 0
2
size: 1
3
size: 2
-
size: 2
poll
4
5
poll
size: 2
size: 2
7
size: 3
-
size: 3
poll
poll
poll
size: 0
size: 0
size: 0
-
size: 1
poll

内容的提问来源于stack exchange,提问作者shuning lin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:35:36