描述

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

          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)
}

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

还不快抢沙发

添加新评论