另一棵树的子树

news2025/2/23 2:37:02

目录

  • 题目
    • 题目要求
    • 示例
  • 解答
    • 方法一、
      • 实现思路
      • 时间复杂度和空间复杂度
      • 代码
    • 方法二、
      • 实现思路
      • 时间复杂度和空间复杂度
      • 代码

题目

另一棵树的子树

题目要求

在这里插入图片描述
题目链接

示例

解答

方法一、

递归法

实现思路

依次将树中的每一棵子树都与目标树比较,如果有子树与目标子树相等,则返回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(subRoot==NULL)
    {
        return true;
    }
    if(root==NULL)
    {
        return false;
    }
    //如果当前树和目标树相等,则直接返回true
    if(isSameTree(root,subRoot))
    {
        return true;
    }
    //如果当前树不和目标树相等,就让当前树的左子树和右子树作为根结点,然后和目标树比较
    return isSubtree(root->left,subRoot)||isSubtree(root->right,subRoot);
}

方法二、

实现思路

时间复杂度和空间复杂度

代码


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树多选搜索查询,搜索后选中状态仍保留

<template><div class"half-transfer"><div class"el-transfer-panel"><div><el-checkbox v-model"selectAll" change"handleSelectAll">全部</el-checkbox></div><el-input v-model&qu…

使用gn+Ninja构建项目

使用下载编译好的gn和ninja报错 先下载了gn的源码[gn.googlesource.com/gn]&#xff0c;然后编译报错&#xff0c;就直接下载了了编译号的gn和Ninja&#xff0c;然后写了Helloworld应用的BUILD.gn&#xff0c;然后将"gn\examples\simple_build\build"拷贝至当前目录…

Qt之遮罩—实现不规则窗体

Qt之setMask() 前言 使用遮罩可以将窗口形状多样化&#xff0c;变成各种各样的图片或者图形&#xff0c;先看一下效果吧&#x1f447; 可以看到现在的窗口是一束花&#xff0c;而我们拖动花就相当于拖动窗口&#xff0c; setMask()只是说可以让哪些地方可见哪些地方不可见其…

Doris最大链接数优化

问题背景&#xff1a; 用户在使用Doris的时候&#xff0c;当访问用户过多时会报Reach limit of connections&#xff0c;针对这种情况需要调整Doris最大连接数&#xff0c;具体做法如下。 解决办法&#xff1a; Session变量设置 SET PROPERTY FOR root max_user_connection…

网络优化工程师,你真的了解吗?

一、5G网络优化工程师到底是什么&#xff1f; 5G&#xff0c;就是我们通常所说的第五代移动通信标准&#xff0c;属于目前最热门的新技术趋势。随着2019年5G技术进入正式的商用阶段&#xff0c;拥有广阔的发展前景&#xff0c;备受瞩目。“5G工程师”这个词是一个概念词&#x…

新增!视频智能分析/AI算法智能分析网关V5告警功能添加教程来咯!

智能分析网关系列是基于边缘AI计算技术&#xff0c;可对前端摄像头采集的视频流进行实时检测分析&#xff0c;能对监控画面中的人、车、物进行识别&#xff0c;可实现的检测包括&#xff1a;人脸检测与识别、车辆检测与识别、烟火识别、安全帽/反光衣识别、区域入侵识别等&…

用P,V操作解决进程同步问题的解题步骤(优化版)

蓝颜色是格外注意的 还有读读共享&#xff0c;读写互斥问题。 要背会四个模式&#xff0c;套用模式 例题讲解1&#xff09;生产者-消费者问题 一般意义的“生产者—消费者”问题&#xff1a;N个buffer&#xff0c;多个生产者&#xff0c;多个消费者&#xff0c;循环存取buffer。…

光电水表和脉冲水表有什么区别?

随着科技的不断发展&#xff0c;水表也在不断地更新换代。在众多种类的水表中&#xff0c;光电水表和脉冲水表因其高精度、稳定性能和易于管理等优点&#xff0c;逐渐成为现代家庭的首选。那么光电水表和脉冲水表有什么区别呢?下面就由小编来带大家了解下吧。 一、工作原理上的…

ES是一个分布式全文检索框架,隐藏了复杂的处理机制,核心数据分片机制、集群发现、分片负载均衡请求路由

ES是一个分布式框架&#xff0c;隐藏了复杂的处理机制&#xff0c;核心数据分片机制、集群发现、分片负载均衡请求路由。 ES的高可用架构&#xff0c;总体如下图&#xff1a; 说明&#xff1a;本文会以pdf格式持续更新&#xff0c;更多最新尼恩3高pdf笔记&#xff0c;请从下面…

linux centos7 bash中字符串反向输出

给定一个字符串&#xff0c;如何反向(倒序)输出&#xff1f; 字符串反转的方法&#xff1a;a.对各个字符位置进行循环调换&#xff08;从原字符串左边取出放在新字符串的右边&#xff1b;从原字符串右边取出放在新字符串的左边&#xff09;。b.对各个字符由水平排列转为垂直排…

【第四阶段】kotlin语言的list遍历

package Stage4fun main() {val list listOf(1,2,3,4,5,6,7,8,9)//第一种方式 for()println("第一种方式遍历元素&#xff1a;")for (i in list){print("元素&#xff1a;$i")}println()//第二种方式forEachprintln("第二种方式遍历元素&#xff1a;…

微信短链跳转到小程序指定页面调试

首先说下背景&#xff1a;后端给了短链地址&#xff0c;但是无法跳转到指定页面。总是在小程序首页。指定的页面我们是h5页面。排查步骤如下&#xff1a; 1、通过快速URL Scheme 编译。上部普通编译 下拉找到此选项。 、 2、按照小程序的要求的URL Scheme输入。另外后端给的…

满足每个用户的分析需求,奥威BI数据可视化工具真没吹牛

我们都知道&#xff0c;随着BI商业智能技术的发展&#xff0c;现在做数据可视化分析的效率越来越高&#xff0c;操作难度也越来越低&#xff0c;但真能随时满足每个用户的分析需求&#xff1f;奥威BI数据可视化工具真没吹牛。 在奥威BI数据可视化工具上还真有一种功能可及时且…

20个值得收藏的WebGL性能优化技巧

WebGL 是一项功能强大的技术&#xff0c;允许开发人员使用基于 OpenGL ES 图形标准的 WebGL API 在 Web 浏览器中创建 3D 图形。 然而&#xff0c;由于在 Web 环境的限制下实时渲染 3D 图形的复杂性&#xff0c;优化 WebGL 性能可能具有挑战性。 推荐&#xff1a;用 NSDT编辑器…

微信小程序修改数据,input不能实时回显

场景&#xff1a; 填写发票抬头&#xff0c;填写抬头公司时候&#xff0c;会根据用户输入的内容实时获取相关的公司信息&#xff0c;用户选择搜索出来的公司&#xff0c;这时候 setData,但是数据并没有回显&#xff0c;而是需要再需要点一下屏幕。 解决方案&#xff1a; 原来…

8月24-25日上课内容 第三章 MySQL索引、事务与存储引擎

本章结构 索引介绍 1、索引的概念 索引就是一种帮助系统能够快速查询信息的结构 2、索引的作用 设置索引之后查询速度变快&#xff0c;当表很大或查询涉及到多个表时&#xff0c;可以成千上万倍地提高查询速度 加快表与表之间连接 降低数据库的IO成本 创建唯一索引来保证…

【dart】dart基础学习使用(一):变量、操作符、注释和库操作

前言 学习dart语言。 注释 Dart 支持单行注释、多行注释和文档注释。 单行注释 单行注释以 // 开头。Dart 编译器将忽略从 // 到行尾之间的所有内容。 void main() {// 这是单行注释print(Welcome to my Llama farm!); }多行注释 多行注释以 /* 开始&#xff0c;以 / 结…

KubeFlow组件介绍

kubeflow是一个胶水项目&#xff0c;它把诸多对机器学习的支持&#xff0c;比如模型训练&#xff0c;超参数训练&#xff0c;模型部署等进行组合并已容器化的方式进行部署&#xff0c;提供整个流程各个系统的高可用及方便的进行扩展部署了 kubeflow的用户就可以利用它进行不同的…

合并两个有序的单链表,合并之后的链表依然有序

定义节点 class ListNode {var next: ListNode _var x: Int _def this(x: Int) {thisthis.x x}override def toString: String s"x>$x" } 定义方法 class LinkedList {var head new ListNode(0)def getHead(): ListNode this.headdef add(listNode: Li…