虽然这道题被标为中等难度, 但是也是一个 bfs 就可以解决的. 只是需要存一下深度信息然后作比较就好了. 代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution:
def connect(self, root: 'Node') -> 'Node':
if root is None:
return
def bfs():
level = 0
node_index = 0
level_index = 1
queue = [(root, level)]
while queue:
node, current_level = queue.pop(0)
if queue and queue[0][level_index] == current_level:
node.next = queue[0][node_index]
if node.left:
queue.append((node.left, current_level+1))
if node.right:
queue.append((node.right, current_level+1))
bfs()
return root