El significado del título: agregue un nuevo puntero a cada nodo del árbol binario completo, que puede indicar el siguiente nodo del nodo actual en la capa. El título no es difícil, y solo necesita ser atravesado. Configure una cola para almacenar los nodos de la capa actual y luego elimine uno por uno. El siguiente puntero del nodo más a la derecha está vacío. He escrito preguntas similares en pat antes, pero están escritas en C ++ y no estoy familiarizado con Python. El siguiente código es del tutorial oficial
from collections import deque
class Solution:
def connect(self, root: 'Node') -> 'Node': # root是指向Node型的指针
if not root:
return root
# 根节点进队
q = deque([root])
while q:
size = len(q) #每次的结点数目
for i in range(size):
node = q.popleft() #出队
if(i < size - 1): #每一层最右边那个结点不需要指定next
node.next = q[0]
if node.left: #下一层结点入队
q.append(node.left)
if node.right:
q.append(node.right)
return root