力扣面试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;
    }
}
相关推荐
折哥的程序人生 · 物流技术专研7 小时前
Java面试85题图解版 · 特别篇:2026后端高频面试题复盘(算法底层逻辑+高并发架构设计全解析,附Java实战代码)
java·网络·数据库·算法·面试
程序员二叉7 小时前
【Java】 异常高频面试题精讲 | 易错点+对比总结
java·开发语言·面试
想吃火锅10058 小时前
【leetcode】14.最长公共前缀js
算法·leetcode·职场和发展
小林ixn9 小时前
LeetCode 206. 反转链表(迭代 + 递归详解)
算法·leetcode·链表
菜鸟‍11 小时前
LeetCode 1 27 和 704 || 两数之和 移除元素 二分查找
算法·leetcode·职场和发展
weixin_5231853211 小时前
Java面试高频题:Integer缓存机制与 equals、== 区别
java·缓存·面试
退休倒计时12 小时前
【每日一题】LeetCode 142. 环形链表 II TypeScript
算法·leetcode·链表·typescript
胡志辉15 小时前
深入浅出理解浏览器事件循环:从一道输出题讲到 Chrome 源码
前端·javascript·面试
sjsjs1116 小时前
力扣3558. 给边赋权值的方案数 I
算法·leetcode·职场和发展
花间相见16 小时前
【LeetCode01】—— 无重复字符的最长子串:滑动窗口经典题详解
python·算法·leetcode