力扣链接:117.填充每个节点的下一个右侧节点指针
难度:⭐⭐
解题关键词:二叉树
、层序遍历
解题思路:使用层序遍历,然后将每一层的元素单独拿出来,然后将前一个元素的 next 指针指向数组中的下一个元素,最后的元素指向 null 就可以了。
typescript
function connect(root: Node | null): Node | null {
// 如果 root 为空,直接返回
if (root === null) return null
// 队列
let queue: Node[] = [root]
while (queue.length) {
let size = queue.length
// 将每一层的元素拿出来
const curLayerNode: Node[] = queue.splice(0, size)
// 将前一个元素的 next 指针指向数组中的下一个元素,最后的元素指向 null
for (let i = 1; i <= size; i++) {
const prev = curLayerNode[i - 1]
const cur = curLayerNode[i]
// 如果有左节点,加入栈
if (prev.left) queue.push(prev.left)
// 如果有右节点,加入栈
if (prev.right) queue.push(prev.right)
// 如果有后一个节点,那么前一个元素 next 指向它
cur ? prev.next = cur : prev.next = null
}
}
return root
};