101. Symmetric Tree

2022-05-21  本文已影响0人  sarto

题目

给定一个二叉树的根 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
上一篇 下一篇

猜你喜欢

热点阅读