力扣面试150 填充每个节点的下一个右侧节点指针 II BFS 逐层构建法

Problem: 117. 填充每个节点的下一个右侧节点指针 II

🍻 BFS 空间优化

👩‍🏫 参考题解

  • ⏰ 时间复杂度: O ( n ) O(n) O(n)
  • 🌎 空间复杂度: O ( 1 ) O(1) O(1)
Java 复制代码
class Solution {
    public Node connect(Node root) {
        if (root == null) {
            return null;
        }
        Node ans = root;
        Node cur = root;// 上一层链表的头结点
        while(cur != null){
            Node head = new Node(-1), tail = head;// 当前层的头尾结点
            for(Node i = cur; i != null; i = i.next){ // 遍历上一层链表的每个节点的左右孩子
                if(i.left != null){// 先加左孩子到当前层的链表
                    tail.next = i.left;
                    tail = tail.next;
                }
                if(i.right != null){// 再加右孩子到当前层的链表
                    tail.next = i.right;
                    tail = tail.next;
                }
            }
            cur = head.next;// 移动到下一层
        }
        
        return ans;
    }
}
相关推荐
橘颂TA38 分钟前
【剑斩OFFER】算法的暴力美学——两整数之和
算法·leetcode·职场和发展
Dream it possible!1 小时前
LeetCode 面试经典 150_二叉搜索树_二叉搜索树的最小绝对差(85_530_C++_简单)
c++·leetcode·面试
xxxxxxllllllshi1 小时前
【LeetCode Hot100----14-贪心算法(01-05),包含多种方法,详细思路与代码,让你一篇文章看懂所有!】
java·数据结构·算法·leetcode·贪心算法
前端小L1 小时前
图论专题(二十二):并查集的“逻辑审判”——判断「等式方程的可满足性」
算法·矩阵·深度优先·图论·宽度优先
专业抄代码选手3 小时前
【Leetcode】1930. 长度为 3 的不同回文子序列
javascript·算法·面试
-森屿安年-5 小时前
LeetCode 283. 移动零
开发语言·c++·算法·leetcode
拉不动的猪5 小时前
Vue 跨组件通信底层:provide/inject 原理与实战指南
前端·javascript·面试
best6666 小时前
Javascript有哪些遍历数组的方法?哪些不支持中断?那些不支持异步遍历?
前端·javascript·面试
小时前端7 小时前
前端架构师视角:如何设计一个“站稳多端”的跨端体系?
前端·javascript·面试
元亓亓亓7 小时前
LeetCode热题100--79. 单词搜索
算法·leetcode·职场和发展