树与图中等1 种解法

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

为完美二叉树的每个节点设置指向同层右侧相邻节点的 next 指针。

#二叉树#广度优先搜索#链表

解题主线

01

固定层大小后,只连接当前层相邻节点,最后一个节点保持 null。

解法 1BFS 逐层连接

每层维护 previous 指针,将它连接到当前出队节点。

时间复杂度

O(n)

空间复杂度

O(w);未利用完美二叉树可达 O(1) 的额外空间性质

116. 填充每个节点的下一个右侧节点指针 · BFS 逐层连接
import java.util.*;

class Node {
    int val;
    Node left;
    Node right;
    Node next;

    Node(int val) {
        this.val = val;
    }
}

class Solution {
    public Node connect(Node root) {
        if (root == null) return null;
        Deque<Node> queue = new ArrayDeque<>();
        queue.offer(root);
        while (!queue.isEmpty()) {
            Node previous = null;
            for (int size = queue.size(); size > 0; size--) {
                Node node = queue.poll();
                if (previous != null) previous.next = node;
                previous = node;
                if (node.left != null) queue.offer(node.left);
                if (node.right != null) queue.offer(node.right);
            }
            previous.next = null;
        }
        return root;
    }
}

每层维护 previous 指针,将它连接到当前出队节点。

边界与易错点

  • 下一层节点入队不会影响当前层的连接边界。
整理来源

由旧仓库源码复核、去重并整理;展示代码已按 Java 21 语义修正明显问题。

leetcode/src/main/java/tree/Q116_node_connect.java