题目
给定一个二叉树的根 root
,检查它是否是自身的镜像。
解析
判断左子树和右子树是否相等。
(1)非空节点,加入其左右子树,并叠加该层左右子树的非空元素个数
(2)空节点,设其左右子树为空
issym(left, right) bool
伪代码
if left == nil && right == nil
return true
if left == nil || right == nil
return false
return left.Val == right.val && issym(left.left, right.right) && issym(left,right, right.left)
代码
func isSymmetric(root *TreeNode) bool {
if root == nil {
return true
}
return issym(root.Left, root.Right)
}
func issym(left *TreeNode, right *TreeNode) bool {
if left == nil && right == nil {
return true
}
if left == nil || right == nil {
return false
}
return left.Val == right.Val && issym(left.Left, right.Right) && issym(left.Right, right.Left)
}
image.png
网友评论