“树的子结构”

描述

输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)

假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2},2个树的结构如下,可以看出B是A的子结构

数据范围:

0 <= A的节点个数 <= 10000

0 <= B的节点个数 <= 10000

示例1

输入:{8,8,7,9,2,#,#,#,#,4,7},{8,9,2}

返回值:true

示例2

输入:{1,2,3,4,5},{2,4}

返回值:true

示例3

输入:{1,2,3},{3,1}

返回值:false

 思路:

按照树 A 中每个节点的遍历顺序比较当前节点和 B 的根节点是否相同,如果相同就按照 B 的结构遍历他们的每个节点。
例子是题目所给的样例:

1

2

A : {8,8,#,9,#,2,#,5}

B : {8,9,#,2}

1.两个节点都是 8 ,根节点相同,开始遍历其他节点。


2. 第二个节点不相同函数结束

 

 
3. 继续比较 A 中节点和 B 的根节点,再次发现相同


4. 按照 B 的顺序遍历所有节点发现 B 是 A 的子树

 

 

复杂度分析

在最坏情况下, 把 A 遍历了一遍,并且对于每个根节点都把 B 遍历了一遍,假设 A 和 B 分别有 m, n 个节点, 所以最坏的时间复杂度是 O(m * n)。

/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution {
public:bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {if(pRoot1 == nullptr || pRoot2 == nullptr) return false;bool flag = false;flag = Istreeboy(pRoot1, pRoot2);if(!flag) flag = HasSubtree(pRoot1->left, pRoot2);if(!flag) flag = HasSubtree(pRoot1->right, pRoot2);return flag;}bool Istreeboy(TreeNode* p1, TreeNode* p2){if(!p2) return true;if(!p1) return false;if(p1->val == p2->val){return Istreeboy(p1->left, p2->left) && Istreeboy(p1->right, p2->right);}return false;}
};

 

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

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

相关文章

华为OD机试题【导师请吃火锅】【2023 B卷 100分】

文章目录 &#x1f3af; 前言&#x1f3af; 题目描述&#x1f3af; 解题思路&#x1f4d9; Python实现代码&#x1f4d7; Java实现代码&#x1f4d8; C语言实现&#xff1a; &#x1f3af; 前言 &#x1f3c6; 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为OD机…

树的结构-树的各种定义及性质

树&#xff1a; n个结点组成的有限集合。 &#xff08;1&#xff09;有且仅有一个特定的称为根的结点。 &#xff08;2&#xff09;当n>1时&#xff0c;其余结点可分为m个互不相交的有限集合&#xff0c;其中每个集合本身又是一棵树&#xff0c;称为根节点的子树。 注意&…

VTK-vtkInformation

前言&#xff1a;本博文主要介绍vtk中的接口vtkInformation的应用&#xff0c;以及vtkInformation的衍生用法&#xff0c;希望对各位小伙伴有所帮助&#xff0c;谢谢&#xff01; 目录 vtkInformation介绍 描述&#xff1a; Information中接受的类型&#xff1a; 方法 vtk…

半导体(TSS)放电管的两大选购注意事项及选型小策略

固体放电管&#xff0c;是以半导体工艺制作而成的&#xff0c;因此我们也称为半导体&#xff08;TSS&#xff09;放电管&#xff0c;它常在电路中并联使用&#xff0c;具备伏安特性。 TSS放电管在电路中类似开关&#xff0c;在正常工作时不动作&#xff0c;但一般被保护电路受到…

PRE、RC、beta、RTM 含义扫盲

alpha版:内部测试版。α是希腊字母的第一个,表示最早的版本,一般用户不要下载这个版本,这个版本一般是作为技术预览的,很可能包含很多BUG,功能也不全,主要是给开发人员和测试人员测试和找BUG用的。——————————————————————————————————…

直播预告|RTM 助力信令与消息全球实时互通

RTM 是实时消息&#xff08;Real-time Messaging&#xff09;的简称。在实时互动场景中&#xff0c;用户通常有两种互动方式&#xff1a;一种是通过音视频进行互动&#xff0c;比如语音连麦、视频连麦等&#xff1b;另一种是通过非音视频的方式进行互动&#xff0c;比如文字聊天…

数据库sql server 2008 r2 RTM版本升级到sql server 2012 r2

(数据库sql server 2008 r2 RTM版本升级到2012) 1.先介绍sql 2008数据库的几个版本 10.00.1600其实就是SQL 2008 10.50.1600其实就是SQL 2008 R2 10.50.2500其实就是SQL 2008 R2 SP1 10.50.4000其实就是SQL Server 2008 R2 SP2 SQL Server 版本号汇总 那么sql server 2008后…

IBM LSF学习(是什么)

碎碎念&#xff1a;这里主要介绍&#xff0c;LSF是什么&#xff0c;本人秉承的写作原则或者技术学习原则&#xff0c;“是什么”&#xff0c;“为什么”&#xff0c;“怎么用”。 这里借鉴了这几篇文章并进行自我理解&#xff1a; https://blog.csdn.net/qq_43653083/article/d…

微软服务器操作系统指什么意思,现代服务器操作系统:你绝对想不到是什么!...

大家好&#xff0c;小编又和大家见面了。上一篇文章&#xff0c;我们了解了Windows Server 2008&#xff0c;今天&#xff0c;我们讲一讲Windows Server 2012。 Windows Server 2012(开发代号&#xff1a;Windows Server 8)是微软的一个服务器系统。这是Windows 8的服务器版本&…

直播选择 RTC 还是 RTMP?

RTC 实时直播 RTC&#xff08;Real Time Communication&#xff09;实时音视频通信&#xff0c;它最大的特点就是低延时和无卡顿。从功能流程上说&#xff0c;它包含了采集、编码、前后处理、传输、解码、缓冲、渲染等诸多环节&#xff0c;每一个细分环节&#xff0c;还有更细…

灰度测试是什么意思

本文章&#xff0c;百度论坛知乎等处查询&#xff0c;了解灰度测试&#xff0c;方便学习。本文章只限学习。文章可能内容多&#xff0c;我进行了网上查询终结&#xff0c;还需细看整理&#xff0c;如有重复内容请见谅&#xff0c;我也正在了解&#xff0c;方便手机携带查看。 …

MySQL安装流程 及 8.0与5.7区别

一、MySQL版本介绍 1、MySQL 8.0 窗口函数&#xff1a;MySQL 8.0版本支持窗口函数&#xff0c;这是数据分析工作中非常常用的一类函数。窗口函数可以让用户在单个查询中跨多个行检索数据&#xff0c;并在查询结果中对数据执行计算。隐藏索引&#xff1a;在MySQL 8.0版本中&am…

探究Cache缓存功能---【pytest】

前言 pytest运行完用例之后会生成一个 .pytest_cache的缓存文件夹&#xff0c;用于记录用例的ids和上一次失败的用例。 1、跑自动化时经常会出现这样一个情况&#xff0c;一轮自动化跑完后零星出现了几个失败测试用例&#xff0c;无法断定失败的原因&#xff0c;所以可能需要重…

浏览器插件检测淘宝订单是否淘客下单

1、插件安装 。 2、获取接口秘钥 &#xff0c;获取之后请将接口秘钥填写到本插件中。 3、登录淘宝/天猫已卖出报表列表&#xff0c;点击【检测淘客】按钮&#xff0c;等待返回检测结果&#xff1b;

帝国CMS淘宝客插件,帝国自动调用淘宝客插件链接自动转换

插件功能 可以根据根据设置的字段自动调用淘宝客商品数量&#xff0c;适用于各种资讯和导购站 具体看演示地址&#xff0c;可根据自己的样式来调用数据

淘宝客接入PHP(一)

1、文件位置 extend/tbk文件里面 2、引入tbk的sdk Loader::import(TopSdk, EXTEND_PATH."/tbk/taobaoke");3、修改autoload文件 直接运行报一下错误&#xff0c;是因为这个类给了namespace的原因。 两种解决方案&#xff0c;1、删除namespace 2、修改为spl_autoloa…

淘宝开放平台Api的小试牛刀(获取淘宝客推广商品信息)

最近在学习淘宝开放平台&#xff0c;属于初学小菜鸟&#xff0c;有一点点小成就给大家分享一下。 要做这个东西&#xff0c;第一步你必须注册为淘宝开发方平台的开发人员。地址&#xff1a;http://open.taobao.com/index.htm 点击加入开放平台&#xff0c; 配图&#xff1a;…

淘宝客高手必备的14大WordPress插件

做淘宝客相信没有人不知道WP的。WordPress一款是用PHP语言和MySQL数据库开发的开源程序。由于WP的安装和使用都非常简单&#xff0c;并且 功能非常强大&#xff0c;可使用的插件和模板数量非常庞大&#xff0c;目前WordPress已经成为国外内主流的Blog搭建平台。WordPress的好处…

java淘宝客开发(一)

java淘宝客开发&#xff08;一&#xff09; java淘宝客开发&#xff08;一&#xff09;基础 网站建设与权限申请OAuth2权限权限开发测试淘宝客私域用户管理能力调研结果 java淘宝客开发&#xff08;一&#xff09; 淘宝客基于CPS模式&#xff0c;带货分佣&#xff0c;这几年短…

电动力学专题:电磁场规范不变性与规范自由度

对称性&#xff0c;不变性&#xff0c;相对性&#xff0c;协变形 在现代物理学中常常被认为具有相同的含义&#xff08;好拗口&#xff09; 规范与规范的自由度 保证电磁场物理量不改变的情况下&#xff0c;有多组势可供选择&#xff0c;而每组势可以称为一个规范 规范不变性…