美文网首页
面试题28.对称的二叉树_hn

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

作者: 1只特立独行的猪 | 来源:发表于2020-03-27 16:05 被阅读0次

    题目描述

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

    例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
    
        1
       / \
      2   2
     / \ / \
    3  4 4  3
    但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
    
        1
       / \
      2   2
       \   \
       3    3
    

    示例

    示例 1:

    输入:root = [1,2,2,3,4,4,3]
    输出:true
    

    示例2:

    输入:root = [1,2,2,null,3,null,3]
    输出:false
    

    限制:
    0 <= 节点个数 <= 1000

    解答方法

    方法一:DFS

    思路

    判断左右子树是否对称。A,B两棵树根节点相等,判断如果A.left == B.right,A.right == B.left。则两棵树对称

    代码

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def isSymmetric(self, root: TreeNode) -> bool:
            def dfs(A,B):
                if not A and not B:
                    return True
                elif not A or not B or A.val != B.val:
                    return False
                else:
                    return dfs(A.left, B.right) and dfs(A.right, B.left)
            if not root:
                return True
            return dfs(root.left, root.right)
    

    时间复杂度

    空间复杂度

    相关文章

      网友评论

          本文标题:面试题28.对称的二叉树_hn

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