美文网首页
101.对称二叉树

101.对称二叉树

作者: qiHuang112 | 来源:发表于2020-01-07 10:44 被阅读0次

    题目#101.对称二叉树

    给定一个二叉树,检查它是否是镜像对称的。
    例如,二叉树 [1,2,2,3,4,4,3] 是对称的。


    但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:


    思路分析

    判断一个二叉树是否是对称的,只需要判断这个二叉树是否与自己对称即可,代码如下

    代码

    fun isSymmetric(root: TreeNode?): Boolean {
        return isSymmetric(root, root)
    }
    
    private fun isSymmetric(a: TreeNode?, b: TreeNode?): Boolean {
        if (a == null && b == null) return true
        if (a == null || b == null) return false
        return a.`val` == b.`val` && isSymmetric(a.left, b.right) && isSymmetric(a.right, b.left)
    }
    

    代码分析

    因为demo中给定的入参只有一个,所以重载方法,并将两个root传入private fun isSymmetric(a: TreeNode?, b: TreeNode?): Boolean {,要保证两个二叉树对称需要考虑三种情况:

    • 两个树都为空,则两树对称if (a == null && b == null) return true
    • 两个树有且仅有一个为空,则两树一定不对称if (a == null || b == null) return false
    • 否则,只需要满足两树根节点的值相等,且左右子树互相对称既可。return a.`val` == b.`val` && isSymmetric(a.left, b.right) && isSymmetric(a.right, b.left)

    相关文章

      网友评论

          本文标题:101.对称二叉树

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