题解 | #对称的二叉树#

对称的二叉树

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

#include <stdbool.h>
bool isSame(struct TreeNode* root1, struct TreeNode* root2)
{
    if(root1 == NULL && root2 == NULL)
        return true;
    if(root1 == NULL || root2 == NULL)
        return false;
    if(root1->val != root2->val)
        return false;
    return isSame(root1->left, root2->right) && isSame(root1->right , root2->left);
}

bool isSymmetrical(struct TreeNode* pRoot ) {
    return isSame(pRoot, pRoot);
}
1.左右是否均为空。均为空表示对称。
2.除开1的情况,左右是否有一个为空。只要有一个为空,则必不对称。
3.除开1,2的情况,那么左右必均不为空,那么检查值是否相等,不相等则必不对称。
4.除开1,2,3的情况,那么左右两个值相等,就继续判断其左右孩子是否对称,
  即左边的左孩子与右边的右孩子是否相等,左边的右孩子和右边的左孩子是否相等。相等则对称
全部评论

相关推荐

2025-12-17 17:15
华东师范大学 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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