题解 | #对称的二叉树#

https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb

# 思路:
利用迭代,定义一个函数,传入左右两个节点(left,right),对两个节点进行判断,如果有一个节点为 nil,则直接返回 false,如果两个节点都为 nil,则到达了叶子节点,返回 true。如果两个节点都不为 nil,则判断这两个节点的值是否相等,不相等则返回 false。最后递归调用该函数,判断 (left.Left, right.Right) 和 (left.Right, right.Left) 是否是对称的。
# 代码
func isSymmetrical( pRoot *TreeNode ) bool {
    // write code here
    return Inner(pRoot, pRoot)
}

func Inner(left, right *TreeNode) bool {
    if left == nil && right != nil {
        return false
    } else if left != nil && right == nil {
        return false
    } else if left == nil && right == nil {
        return true
    }
    if left.Val != right.Val {
        return false
    }
    return Inner(left.Left, right.Right) && Inner(left.Right, right.Left)
}


全部评论

相关推荐

点赞 评论 收藏
分享
我面试,她问我有女朋友没
不太迷人的反派_:不过对象,还会结合你老家,意向城市等等,看你是否稳定。哥们,别多想
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务