leetcode-python-对称二叉树

1)递归,判断是否两个都是空节点。

如果只有一个空,则False

如果都不空但不相等,则False

否则返回左节点的左节点,右节点的右节点。

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

#递归
    
    
    
class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        def check(left,right):
            if not left and not right:
                return True
            elif not left or not right:
                return False 
            if left and right and left.val != right.val:
                return False
            return check(left.left,right.right) and check(left.right,right.left)
        return check(root,root)

2)栈+字符串,每层判断是否是回文串

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

#递归
    
    
    
class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        stack = list()
        stack.append(root)
        while stack:
            next_stack = list()
            val_str = list()
            for node in stack:
                if not node:
                    val_str.append(None)
                    continue
                val_str.append(node.val)
                next_stack.append(node.left)
                next_stack.append(node.right)
            if val_str != val_str[::-1]:
                return False
            else:
                stack = next_stack
        return True
   

 

posted @ 2021-06-04 15:07  泊鸽  阅读(57)  评论(0)    收藏  举报