117. 填充每个节点的下一个右侧节点指针 II
题目描述
解题思路
1、本题每层的连续两个节点都需要链接成链表,层次遍历做合适;
2、如何区分每一层,在进入新一层时,首先获取当前层节点个数,依据个数决定操作次数即可。
代码实现
"""
# Definition for a Node.
class Node:
def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):
self.val = val
self.left = left
self.right = right
self.next = next
"""
class Solution:
def connect(self, root: 'Node') -> 'Node':
# 二叉树的层次遍历 BFS
if not root:
return
queue = [root]
while queue:
level_num = len(queue)
pre_node = None
for _ in range(level_num):
node = queue.pop(0)
if pre_node:
pre_node.next = node
pre_node = node
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return root
参考文献
1、官方题解