leetcode每日一题

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

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

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

cpp 复制代码
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往下找。

代码如下

cpp 复制代码
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。

完整代码

cpp 复制代码
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);
}

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

相关推荐
1000世界小札4 小时前
《大话数据结构》第9章精读:归并排序与快速排序完整 C++ 实现
数据结构·c++·算法
2601_956121976 小时前
背包基础篇(01、完全、分组、多重、混合)
c++·算法·动态规划
兴通物联科技7 小时前
SMT PCB 微小 DataMatrix 码扫不动问题分析 兴通 XT8601B 600 万像素工业读码器落地实践
大数据·人工智能·单片机·嵌入式硬件·算法·计算机视觉
月华路10 小时前
G1 GC 对数组与大对象(Humongous)的处理
java·jvm·算法
我想走路带风10 小时前
LRU和最长前缀和(计算机网络算法)
计算机网络·算法
M78佐菲10 小时前
Linux学习笔记:进程
linux·笔记·学习·算法
徐小夕12 小时前
表格、文档、甘特、大屏、表单一站打通:pxcharts超级表格4.0正式上线!
前端·算法·github
Xin77012 小时前
LeetCode 23.合并 K 个升序链表(分治递归)
leetcode
TechLee13 小时前
跨语言加解密总对不上?这个纯 Go 神库让 AES/RSA 与 PHP、Java 100% 互通
java·后端·算法