leetcode每日一题

https://leetcode.cn/problems/subtree-of-another-tree/

 

这道题需要使用我们之前做过的一道题,那道题我们是来判断两颗树是不是相同的树,这里我们就需要用上这个接口函数,然后思路就是遍历左树和右树来看看是不是有这颗树,这样问题就很好的解决了。

判断两个数是不是想等的话我们可以分出我们的子问题就是他们的值是不是相同的,不相同就是返回false,然后再看看空,空的时候也得返回,空的时候会出现两种情况,一个是两个都是空的时候,这个时候就直接返回false,但是也是会出现不为空的时候,那就是一个为空一个不为空的时候,这个时候我们就得返回的是false,那代码就如下。

bool IsSameTree(struct TreeNode* p, struct TreeNode* q)
{
    if(p == NULL && q == NULL)
    {
        return true;
    }
    if(p == NULL || q == NULL)
    {
        return false;
    }
    if(p->val != q->val)
    {
        return false;
    }
    return IsSameTree(p->left, q->left) &&
    IsSameTree(p->right, q->right);
}

我们在这个题目给的函数接口里来实现左边和右边子树寻找是不是有相同的树,这个时候就是递归下去找,从当前的root往下找。

代码如下

bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){
    if(root == NULL)
    {
        return false;
    }
    if(IsSameTree(root, subRoot))
    {
        return true;
    }
    return isSubtree(root->left, subRoot) || 
    isSubtree(root->right,subRoot);
}

我们左子树或者右子树如果有一个能找到的话就可以返回true。

完整代码

bool IsSameTree(struct TreeNode* p, struct TreeNode* q)
{
    if(p == NULL && q == NULL)
    {
        return true;
    }
    if(p == NULL || q == NULL)
    {
        return false;
    }
    if(p->val != q->val)
    {
        return false;
    }
    return IsSameTree(p->left, q->left) &&
    IsSameTree(p->right, q->right);
}
bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){
    if(root == NULL)
    {
        return false;
    }
    if(IsSameTree(root, subRoot))
    {
        return true;
    }
    return isSubtree(root->left, subRoot) || 
    isSubtree(root->right,subRoot);
}

 

 

今天的每日一题就到这里结束。

 

相关推荐

  1. leetcode每日4

    2023-12-11 17:42:02       37 阅读
  2. leetcode每日37

    2023-12-11 17:42:02       41 阅读
  3. leetcode每日38

    2023-12-11 17:42:02       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-11 17:42:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-11 17:42:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-11 17:42:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-11 17:42:02       20 阅读

热门阅读

  1. 显示DICOM文件的元信息的测试程序编程

    2023-12-11 17:42:02       42 阅读
  2. C语言实现教职工工资管理系统

    2023-12-11 17:42:02       42 阅读
  3. TypeScript 第五节:条件语句

    2023-12-11 17:42:02       42 阅读
  4. 在Ubuntu K8s中创建vnc用于浏览器调试

    2023-12-11 17:42:02       39 阅读
  5. 什么是Restful?

    2023-12-11 17:42:02       33 阅读
  6. C#生成Token字符串

    2023-12-11 17:42:02       35 阅读
  7. 鸿蒙(HarmonyOS)应用开发——保存应用数据

    2023-12-11 17:42:02       49 阅读
  8. vue简单的图片预览

    2023-12-11 17:42:02       39 阅读