对称二叉树

一句话说明

判断一棵树是否对称,本质是看左右两棵子树是不是互为镜像。

Go 代码

func isSymmetric(root *TreeNode) bool {
    if root == nil {
        return true
    }
    return isMirror(root.Left, root.Right)
}
 
func isMirror(left, right *TreeNode) bool {
    if left == nil || right == nil {
        return left == right
    }
    if left.Val != right.Val {
        return false
    }
    return isMirror(left.Left, right.Right) && isMirror(left.Right, right.Left)
}

关键点

镜像比较不是“左对左、右对右”,而是“左对右、右对左”。

相关主题


返回:树算法 | 算法学习导航