题解 | #对称的二叉树#

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)
}


全部评论

相关推荐

03-26 22:55
门头沟学院 Java
烤冷面在迎接:河南byd,应该就是郑大了。不过24届计算机是特殊情况,那年除了九✌和强2,以及两三个关系够硬的双非,其他的都是炮灰,感觉是十几年来互联网行业最烂的一年,如果想了解最新的就业情况,得找现在的大四。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务