【Una pregunta del día】 116. Cómo poblar los punteros siguientes a la derecha en cada nodo

Inserte la descripción de la imagen aquí

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

Supongo que te gusta

Origin blog.csdn.net/SJTUKK/article/details/109091893
Recomendado
Clasificación