leetcode 103. Método BFS de recorrido de secuencia en zigzag de árbol binario

La pregunta 102 es la "pregunta principal" de esta pregunta, y la expresión en la respuesta a la pregunta 102 no se repetirá aquí
https://blog.csdn.net/weixin_50791900/article/details/111569831
Sobre la base de la pregunta 102, solo el recorrido de orden inverso debe considerarse como capa
aquí.Uso un nivel variable de la capa de grabación de la necesidad de recorrido inverso
se establece inicialmente en 0, cada recorrido uno más uno (también una profundidad de registro de un árbol binario)
requiere una capa impar invertir
el orden original de recorrido sin cambiar las
necesidades solo en la conveniencia inversa Inserte el valor al principio de la lista en la capa.
Aquí utilizo el método de inserción para insertar en la posición 0 para lograr el efecto de inserción inversa

class Solution:
    def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root:
            return[]

        ans = []
        a = collections.deque()
        a.append(root)
        level = 0

        while a:
            n = len(a)
            b = []

            for i in range(n):
                node = a.popleft()
                if level % 2 == 0:
                    b.append(node.val)
                if level % 2 != 0:
                    b.insert(0, node.val)
                if node.left:
                    a.append(node.left)
                if node.right:
                    a.append(node.right) 

            level += 1
            ans.append(b)
        return ans

El efecto es aceptable

Supongo que te gusta

Origin blog.csdn.net/weixin_50791900/article/details/111570973
Recomendado
Clasificación