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

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

相关推荐
编码浪子3 小时前
趣味学RUST基础篇(智能指针_结束)
开发语言·算法·rust
爱编程的化学家3 小时前
代码随想录算法训练营第六天 - 哈希表2 || 454.四数相加II / 383.赎金信 / 15.三数之和 / 18.四数之和
数据结构·c++·算法·leetcode·双指针·哈希
青鱼入云6 小时前
【面试场景题】电商订单系统分库分表方案设计
大数据·面试·职场和发展
程序员三藏6 小时前
2025最新的软件测试面试八股文(800+道题)
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
闲人编程6 小时前
图像去雾算法:从物理模型到深度学习实现
图像处理·人工智能·python·深度学习·算法·计算机视觉·去雾
咔咔学姐kk6 小时前
大模型微调技术宝典:Transformer架构,从小白到专家
人工智能·深度学习·学习·算法·transformer
haogexiaole7 小时前
Dijkstra 算法
算法
papership9 小时前
【入门级-算法-6、排序算法: 插入排序】
数据结构·算法·排序算法
HAH-HAH9 小时前
【蓝桥杯 2024 国 Java A】粉刷匠小蓝
c++·学习·数学·算法·职场和发展·蓝桥杯·组合数学
hweiyu0010 小时前
C++设计模式,高级开发,算法原理实战,系统设计与实战(视频教程)
c++·算法·设计模式