描述

给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
例如:下面这棵二叉树是对称的

          1
        /   \
     2         2
   /  \     /  \
  3    4   4    3

下面这棵二叉树不对称的:

          1
        /   \
       2        2
       \     \
        3     3

数据范围:节点数满足 0≤n≤1000,节点上的值满足∣val∣≤1000

要求:空间复杂度 O(n),时间复杂度 O(n)

示例
// 输入:
{1,2,2,3,4,4,3}
// 返回值:
true

// 输入:
{8,6,9,5,7,7,5}
// 返回值
false
解题思路

递归

代码实现
func recursion(root1 *TreeNode, root2 *TreeNode) bool {
    if nil == root1 && nil == root2 {
        return true
    }
    if nil == root1 || nil == root2 || root1.Val != root2.Val {
        return false
    }
    return recursion(root1.Left, root2.Right) && recursion(root1.Right, root2.Left)
}

/**
 * [JZ28-简单] 对称二叉树
 *
 * @param pRoot TreeNode 类
 * @return bool 布尔型
*/
func isSymmetricalTree(pRoot *TreeNode) bool {
    return recursion(pRoot, pRoot)
}

本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

8 条评论

  1. hzpwylyysg
    hzpwylyysg

    番薯浇米

  2. iodyszhcke
    iodyszhcke

    911世界停滞之日

  3. dyzmydpsqc
    dyzmydpsqc

    为子寻父

  4. alhdzpqszc
    alhdzpqszc

    最强壮的人

  5. srabcjjwmm
    srabcjjwmm

    她想要什么圣诞礼物

  6. qfbrzvqyap
    qfbrzvqyap

    卧底费瑞崛起

  7. nearguuvef
    nearguuvef

    独行月球

  8. neatvaijsd
    neatvaijsd

    至尊无上

添加新评论