Problem: 117. 填充每个节点的下一个右侧节点指针 II
🍻 BFS 空间优化
- ⏰ 时间复杂度: O ( n ) O(n) O(n)
- 🌎 空间复杂度: O ( 1 ) O(1) O(1)
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;
}
}