填充每个节点的下一个右侧节点指针
算法-填充每个节点的下一个右侧节点指针
背景
-
算法–填充每个节点的下一个右侧节点指针
-
博主以代码随想录算法公开课进行学习
题目
-
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
1
2
3
4
5
6struct Node {
int val;
Node *left;
Node *right;
Node *next;
}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为
NULL。初始状态下,所有 next 指针都被设置为
NULL。
示例 1:
1 | 输入:root = [1,2,3,4,5,6,7] |
示例 2:
1 | 入:root = [] |
思路
- 与层序遍历一致
- 从左到右用
next指针连接起来,层最后一个节点的next指向null。
代码实现
1 | class Solution { |
总结
- 队列建议使用
ArrayDeque,比LinkedList内存占用更低,避免 LeetCode 内存超限 - 不可在循环中直接使用
queue.size(),必须提前保存当前层大小