题解 | #对称的二叉树#

对称的二叉树

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

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pRoot TreeNode类 
 * @return bool布尔型
 */
bool comparetwo(struct TreeNode*root1,struct TreeNode*root2){
    if(root1==NULL&&root2==NULL){
        return true;
    }
    if(root1==NULL||root2==NULL||root1->val!=root2->val){
        return false;
    }
    return comparetwo(root1->left,root2->right)&&comparetwo(root1->right, root2->left);
}
bool isSymmetrical(struct TreeNode* pRoot ) {
    // write code here
    return comparetwo(pRoot, pRoot);
}

在比较的过程中分为三种情况,第一种情况:两个节点同时为空,此时一个分支比较结束,返回true;第二种情况:此时只有一个分支为空,或者两个分支的点的值val不相等,此时返回false。根据镜像原理,我们需要拿节点一的左节点同节点二的右节点进行比较,同时我们还需要拿节点一的右节点同节点二的左节点进行比较,同时返回真才证明上一分支的结果为真。

全部评论

相关推荐

点赞 评论 收藏
分享
Twilight_m...:还是不够贴近现实,中关村那块60平房子200万怎么可能拿的下来,交个首付还差不多
点赞 评论 收藏
分享
07-29 14:27
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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