题解 | #牛群的相似结构#

牛群的相似结构

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

考察的知识点:二叉树的递归与比较;

解答方法分析:

  1. 定义一个函数isSameTree,参数为两个TreeNode类型的指针p和q,返回一个布尔值。
  2. 在isSameTree函数中,首先判断p和q是否同时为空,即p和q都为nullptr的情况。如果是,返回true,表示这两个节点相同。
  3. 接下来判断其中一个节点为空而另一个节点不为空的情况,即p为空而q不为空,或者q为空而p不为空。如果存在这种情况,返回false,表示这两个节点不相同。
  4. 如果以上两判断都不满足,即p和q都不为空,那么再判断和q的值是否相等。如果值相等,继续判断节点的左子树和右子树是否相等。
  5. 递归调用isSameTree函数,将p的左子树和q的左子树作为参数,以及p的右子树和q的右子树作为参数。
  6. 最后,将左子树和右子树的结果进行逻辑与操作,如果都返回true,则说明整个树相同,返回true。否则返回false。

所用编程语言:C++;

完整编程代码:↓

/**
 * struct TreeNode {
 *  int val;
 *  struct TreeNode *left;
 *  struct TreeNode *right;
 *  TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param p TreeNode类
     * @param q TreeNode类
     * @return bool布尔型
     */
    bool isSameTree(TreeNode* p, TreeNode* q) {
        if (p == nullptr && q == nullptr)
            return true;
 
        if (p == nullptr || q == nullptr)
            return false;
             
        if (p->val != q->val)
            return false;
         
        return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
    }
};

全部评论

相关推荐

09-01 10:50
已编辑
东华大学 C++
PDD校招_内推:拼多多意向和开奖一般都比较晚,可能10月11月才出意向
点赞 评论 收藏
分享
09-21 23:16
门头沟学院 Java
传奇逃兵王:招不起就别招,叽里咕噜说啥呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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