题解 | #对称的二叉树#

对称的二叉树

https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param pRoot TreeNode类
# @return bool布尔型
#
# 主要就是判断形状,另外当进入空节点时,要对其进行判断
class Solution:
    def isSymmetrical(self, pRoot: TreeNode) -> bool:
        if not pRoot or (not pRoot.left and not pRoot.right):
            return True

        def mir(left, right):
            type = 0

            try:
                if not right.right and left.left:
                    return False
            except:
                type += 1
            try:
                if not right.left and left.right:
                    return False
            except:
                type += 2
            try:
                if not left.left and right.right:
                    return False
            except:
                type += 4
            try:
                if not left.right and right.left:
                    return False
            except:
                type += 8

            if not left and not right:
                return True
            if left.val != right.val:
                return False
            if (
                (not left.left)
                and (not left.right)
                and (not right.right)
                and (not right.left)
            ):
                return True

            if type == 0:
                return mir(left.left, right.right) and mir(left.right, right.left)
            elif type == 1:
                return mir()

        if (pRoot.left and not pRoot.right) or (not pRoot.left and pRoot.right):
            return False

        return mir(pRoot.left, pRoot.right)

全部评论

相关推荐

勇敢的突尼斯海怪选钝...:楼主这拒意向话术好得体呀 !求问HR回复态度咋样呀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务