题解 | #判断二叉树是否相等#

判断二叉树是否相等

http://www.nowcoder.com/practice/9a9e74b71f944efab9992925f7f9a65e

1、题目描述(判断二叉树是否相等)
        给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。
        判断两个二叉树相等的条件是:两个二叉树的结构相同,并且相同的节点上具有相同的值。
1.1 示例1
        输入:{1},{1}
        返回值:true
1.2 示例2
        输入:{1,2},{1,#,2}
        返回值:false
2、解题思路
        很明显,这道题目考察的数据结构为,对于一棵二叉树而言,它既有左子树,又有右子树,因此我们判断两颗二叉树相等的充分必要条件为:根节点的值相等且左右子树相等

/**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param p TreeNode类 
     * @param q TreeNode类 
     * @return bool布尔型
     */
    bool isSameTree(TreeNode* p, TreeNode* q) {
        // write code here
        if(p == NULL && q == NULL) return true;//都为空则两个二叉树相等
        if(p == NULL && q != NULL) return false;
        if(p != NULL && q == NULL) return false;//存在p或q一个为空,另一个不为空,则两个二叉树不相等
        if(p->val != q->val) return false;//根节点值不相等,则两个二叉树不相等
        else//根节点值相等
        {
            if(isSameTree(p->left,q->left) && isSameTree(p->right,q->right))//同时两颗二叉树对应根节点的左子树和右子树都分别相等,则两颗二叉树相等
                return true;
            return false;
        }
    }
};
全部评论

相关推荐

11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 12:19
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务