美文网首页
判断一棵镜像二叉树 2020-09-19(未允禁转)

判断一棵镜像二叉树 2020-09-19(未允禁转)

作者: 9_SooHyun | 来源:发表于2020-09-19 17:10 被阅读0次

判断一棵镜像二叉树

思路1.

使用层次遍历,逐层检查对称性。这是最直观的思路
对称性与结点的位置和结点的值有关,在【对称位置】上有【相同的值】才认为对称
为了体现每一层结点的位置关系,对于空结点我们使用None进行填充

class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        # 使用层次遍历,逐层判断是否对称
        if not root:
            return True
        
        q = list()
        q.append(root)
        while q:
            # 检查当前层是否对称
            vals = [node.val if node else None for node in q]
            if vals != vals[::-1]:
                return False
            l = len(q)
            for i in range(l):
                n = q.pop(0)
                if n:
                    q.append(n.left)
                    q.append(n.right)
        return True

思路2.

利用树自身定义的递归性,使用递归方法解决
一棵二叉树是镜像的 = root.left子树与root.right子树对称
问题转为判断两棵树是否轴对称,或者说一棵树是否是另一棵树的翻转

定义isSymmetric2(root1, root2)返回两棵树是否对称,isSymmetric(root)返回某棵树是否镜像,则


class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        if not root:
            return True
        return self.isSymmetric2(root.left, root.right)
        
        
    def isSymmetric2(self, root1, root2):
        # 同时为None
        if not root1 and not root2:
            return True
        # 同时不为None
        elif root1 and root2:
            return root1.val == root2.val and self.isSymmetric2(root1.left, root2.right) and self.isSymmetric2(root1.right, root2.left)
        # 任意一个为None
        else:
            return False

相关文章

  • 判断一棵镜像二叉树 2020-09-19(未允禁转)

    判断一棵镜像二叉树 思路1. 使用层次遍历,逐层检查对称性。这是最直观的思路对称性与结点的位置和结点的值有关,在【...

  • LeetCode 每日一题 [59] 对称的二叉树

    LeetCode 对称的二叉树 [简单] 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像...

  • 剑指offer | 对称二叉树

    对称二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的如果一棵二叉树和它的镜像一样,那么它是对称的 分析:根据...

  • 29_对称的二叉树

    要求:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如:二叉树 ...

  • 28-对称的二叉树

    请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1...

  • 面试题28. 对称的二叉树

    题目 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树...

  • 算法-28.对称的二叉树

    请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,...

  • 面试题28. 对称的二叉树

    对称的二叉树 题目描述 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称...

  • 剑指 Offer 28. 对称的二叉树

    请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1...

  • 刷题15——面试题28:对称的二叉树

    题目: 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,下图所...

网友评论

      本文标题:判断一棵镜像二叉树 2020-09-19(未允禁转)

      本文链接:https://www.haomeiwen.com/subject/xftyyktx.html