essay

hot100-对称二叉树

#算法

hot100——对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:

image.png

输入:root = [1,2,2,3,4,4,3]

输出:true

示例 2:

image.png

输入: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)
}
comments如果有不同意见或者补充,直接留在这里。
contact

在别处继续找到我

如果你想聊技术、设计,或者只是打个招呼。

暂未配置外部链接