116. 填充每个节点的下一个右侧节点指针
分析
- 虚拟头节点
- 在每一层,用一个虚拟的头节点
head
来连接下一层的节点。head
节点的next
指针指向当前层已连接的节点,以便后续填充下一层的next
指针
- 在每一层,用一个虚拟的头节点
- 遍历当前层的节点
- 对于当前层的每一个节点,我们依次处理它的左右子节点。如果左子节点存在,将其通过
next
指针连接到当前层的tail
上;然后更新tail
。同样地,处理右子节点
- 对于当前层的每一个节点,我们依次处理它的左右子节点。如果左子节点存在,将其通过
- 更新指针指向下一层
- 完成当前层的处理后,更新
cur
指向下一层的第一个节点(即虚拟头节点head
的next
指针)。然后继续处理下一层,直到所有层都被处理
- 完成当前层的处理后,更新
- 返回结果
- 最后返回处理后的根节点
时间复杂度
总时间复杂度 O(n)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|