essay
hot100-对称二叉树
#算法
hot100——对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
提示:
树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100
解法
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func isSymmetric(root *TreeNode) bool {
if root == nil {
return true
}
return check(root.Left, root.Right)
}
// 辅助函数:判断两个子树是否镜像对称
func check(p, q *TreeNode) bool {
// 两个都为空:对称
if p == nil && q == nil {
return true
}
// 一个为空一个不为空:不对称
if p == nil || q == nil {
return false
}
// 值不相等:不对称
if p.Val != q.Val {
return false
}
// 递归检查:p的左子树与q的右子树,p的右子树与q的左子树
return check(p.Left, q.Right) && check(p.Right, q.Left)
}