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);
}

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

相关推荐
余生皆假期-28 分钟前
傅里叶变换和拉普拉斯变换
人工智能·算法·机器学习
数模竞赛Paid answer1 小时前
2026年五一杯数学建模C题边坡预警问题求解全过程文档及程序
算法·数学建模·五一杯
hold?fish:palm1 小时前
20 旋转图像
c++·算法·leetcode
NoteStream2 小时前
【C语言基础】分支和循环(上)
c语言·开发语言·c++·经验分享·笔记·算法·c#
白狐_7982 小时前
408数据结构第7章:查找②——顺序、折半、分块查找秒杀 + 真题
数据结构·算法
卷心菜的学习路3 小时前
基于多模态向量检索的数学相似题推荐系统:完整设计、算法与实验
java·python·算法·大模型·推荐算法·数学相似题
向阳而生自媒体3 小时前
2026年MBA面试自我介绍怎么说?3分钟/5分钟版本怎么准备?
面试·职场和发展
小南知更鸟3 小时前
【leetcodehot100】leetcode-hot100-20260809更新
算法·leetcode·职场和发展
数模竞赛Paid answer3 小时前
2021年深圳杯数学建模A题火星探测器着陆控制方案解题全过程论文及程序
算法·数学建模·深圳杯
hold?fish:palm3 小时前
19 螺旋矩阵
线性代数·算法·矩阵