描述
给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
例如:下面这棵二叉树是对称的
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)
}
还不快抢沙发