Leetcode brushing record-101. Árbol binario simétrico

Inserte la descripción de la imagen aquí

Idea: recorrido convencional de orden anterior, el orden es raíz-izquierda-derecha.
Seguimos el orden y definimos un método de orden transversal transversal-orden, cuyo orden es raíz-derecha-izquierda.
Suponiendo que un árbol es un árbol binario simétrico, entonces orden convencional Los resultados transversales del método transversal y el método transversal de pre-orden deberían ser los mismos.
Ontology utiliza esta idea para comparar los dos resultados transversales anteriores de un árbol. Si son iguales, es un árbol binario simétrico.

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def __init__(self):
        self.leftlist = []
        self.rightlist = []
    def isSymmetric(self, root: TreeNode) -> bool:
        if root is None:
            return True
        elif root.left is None and root.right is None:
            return True
        elif root.left is None or root.right is None:
            return False
        self.root_left_right(root)
        self.root_right_left(root)
        return True if self.leftlist == self.rightlist else False

    def root_left_right(self,node):#常规先序遍历
        if node is None:
            self.leftlist.append('x')
        else:
            self.leftlist.append(node.val)
            self.root_left_right(node.left)
            self.root_left_right(node.right)
    def root_right_left(self,node):#先序-beta
        if node is None:
            self.rightlist.append('x')
        else:
            self.rightlist.append(node.val)
            self.root_right_left(node.right)
            self.root_right_left(node.left)

            


59 artículos originales publicados · Me gustaron 14 · Visitantes más de 20,000

Supongo que te gusta

Origin blog.csdn.net/weixin_41545780/article/details/105482272
Recomendado
Clasificación