python实现leetcode之101. 对称二叉树

2021-09-24  本文已影响0人  深圳都这么冷

解题思路

空树是对称的
只有一个节点也是对称的
如果左子树和右子树是镜像,整棵树是对称的

两棵树是镜像,就是
1.根节点值一样
2.左树的左子树是右树的右子树的镜像
3.左树的右子树是右树的左子树的镜像
三者都成立才是

代码

101. 对称二叉树

# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def isSymmetric(self, root):
        """
        :type root: TreeNode
        :rtype: bool
        """
        if not root:
            return True
        return mirror(root.left, root.right)
    

def mirror(x, y):
    if not x and not y:
        return True
    elif not x or not y:
        return False
    else: # x and y
        return x.val == y.val and mirror(x.left, y.right) and mirror(x.right, y.left)
效果图
上一篇下一篇

猜你喜欢

热点阅读