树的子结构(二十五)

【r-tree算法】一篇文章讲透~ R-tree算法作为一种高效的空间索引结构,为空间数据的处理和管理提供了有力的支持。未来,随着空间数据规模的不断扩大和应用需求的不断升级,R-tree算法将继续得到优化和发展,为空间数据处理领域带来更多的创新和突破。R*-tree算法是R-tree的一种重要变体,它通过引入强制重新插入和重叠面积优化等策略,提高了R-tree的查询性能和空间利用率。由于R-tree的实现相对复杂,涉及多个类和方法的定义,以及空间数据的处理,这里我将提供一个简化版的R-tree核心结构和基本操作的Python代码示例。 阅读详情

题目
输入两棵二叉树A,B,判断B是不是A的子结构。

我们规定空树不是任何树的子结构。

样例
树A:
在这里插入图片描述
树B:
在这里插入图片描述
返回 true ,因为B是A的子结构。

算法

(二叉树,递归) O(nm)
代码分为两个部分:

遍历树A中的所有非空节点R;
判断树A中以R为根节点的子树是不是包含和树B一样的结构,且我们从根节点开始匹配;
对于第一部分,我们直接递归遍历树A即可,遇到非空节点后,就进行第二部分的判断。

对于第二部分,我们同时从根节点开始遍历两棵子树:

  • 如果树B中的节点为空,则表示当前分支是匹配的,返回true;
  • 如果树A中的节点为空,但树B中的节点不为空,则说明不匹配,返回false;
  • 如果两个节点都不为空,但数值不同,则说明不匹配,返回false;
  • 否则说明当前这个点是匹配的,然后递归判断左子树和右子树是否分别匹配即可;

时间复杂度
最坏情况下,我们对于树A中的每个节点都要递归判断一遍,每次判断在最坏情况下需要遍历完树B中的所有节点。
所以时间复杂度是 O(nm),其中 n 是树A中的节点数, m 是树B中的节点数。

class Solution {
    public boolean hasSubtree(TreeNode pRoot1, TreeNode pRoot2) {
        if(pRoot1 == null || pRoot2 == null) return false;
        if(isSame(pRoot1,pRoot2)) return true;
        return hasSubtree(pRoot1.left,pRoot2) || hasSubtree(pRoot1.right,pRoot2);
    }
    public boolean isSame(TreeNode pRoot1, TreeNode pRoot2) {
        if(pRoot2 == null) return true;
        if(pRoot1 == null || pRoot1.val != pRoot2.val) return false;
        return isSame(pRoot1.left,pRoot2.left) && isSame(pRoot1.right,pRoot2.right);
    }
}
133.在 Vue3 中使用 OpenLayers 实现画多边形、任意编辑、遮罩与剪切处理功能 《Vue3+OpenLayers实现多边形绘制与区域处理》摘要:本文介绍如何基于Vue3+OpenLayers+ol-ext实现地图多边形交互功能。核心功能包括:鼠标绘制任意多边形、拖动顶点编辑边界、遮罩显示(非选区变红)、选区剪切显示及功能重置。技术方案采用OpenLayers处理地图渲染,ol-ext实现高级遮罩/剪切效果,ElementPlus提供UI控件。该方案适用于城市规划、园区展示等需要区域标记的场景,完整代码展示了从初始化、绘制、编辑到特效处理的全流程实现。 阅读详情

相关推荐

Basilisk库教程

要在仿真中执行模块,其调度由Basilisk的[Process]和[Task]容器控制。BSK[Task]包含一系列模块,这些模块都以相同的更新频率执行。一个[Process]本质上是一个任务组,可以包含多个相关的任务。例如,在多星仿真中,你可以为每颗卫星创建一个[Process],以便将相关任务和嵌入式模块有序地组织起来。下图展示了一个示例布局,其中bskSat卫星的动力学被添加到与飞行软件(FSW)算法分开的进程中,这些算法在该卫星上执行。在每个进程中,设置了若干任务,这些任务以指定的频率进行评估。

weixin_57997461的博客 1138

数据结构和常用排序算法复杂度

数据结构和常用排序算法复杂度

拉依达不拉跨的博客 1万+

华硕ROG玩家国度安装Ubuntu双系统避坑指南:安全启动密钥那些事儿

本文详细解析了在华硕ROG玩家国度设备上安装Ubuntu双系统时,如何正确处理BIOS中的安全启动(Secure Boot)与密钥管理,避免常见的引导失败和Windows系统无法启动问题。指南提供了从数据备份、启动盘制作到BIOS精细设置(如将OS Type改为Other OS而非简单关闭Secure Boot)以及分区规划的完整流程,确保两个系统都能稳定共存。

weixin_29219189的博客 754

树和二叉树 | 盲学不如不学!先来了解基础知识。

树的基本概念和三种排序 1.树的常用概念 根节点(Root)、叶子节点(Leaf)、父节点(Parent)、子节点(Child)、兄弟节点(Siblings),还有节点的高度、深度以及层数,树的高度。 Root: Top node in a tree Child: Nodes that are next to each other and connected downwards Parent: Converse notion of child Siblings: Nodes with the same pa

qinglidao的博客 378

《我的Classic Platform AUTOSAR之路》 BSWM 模式管理(二)ESH

只有 PostRun 和 wakeup 才能切换到 RUN,其他状态需要先切换到 wakeup 模式。进入 RUN 模式需要打开通信 allow,退出 Run 需要 disable 通信 allow。Prepareshut 与 dem_shutdown 绑定,如果没有 dem 配置,不会生成。除了 Init 模式下,其他模式下都要检查 ECU 的唤醒源和通信 pending 需求。与 ECUM 相关,整个 ECU 状态管理的状态机制。postrun 可以不配置,需要根据自己的需求使能。

libuping2023的博客 964

【YoloV8改进策略】上采样改进|EUCB,轻量高效的上采样模块|即插即用

YOLOv8作为当前最先进的实时目标检测与实例分割模型之一,其在速度与精度之间取得了出色的平衡。然而,在资源受限的边缘设备或对实时性要求极高的应用场景中,YOLOv8的计算开销,尤其是在特征金字塔网络(FPN)和路径聚合网络(PAN)中用于特征融合的上采样操作,仍然是一个瓶颈。YOLOv8的颈部(Neck)结构中广泛使用nn.Upsample进行上采样,该操作虽然简单,但缺乏对特征内容的感知能力,且后续通常需要标准卷积来修复因插值带来的伪影,这增加了不必要的计算负担。

m0_47867638的博客 754

R树及其应用场景

地理围栏(Geo-fencing)是LBS的一种应用,就是用一个虚拟的栅栏围出一个虚拟地理边界,当手机进入、离开某个特定地理区域,或在该区域内活动时,手机可以接收自动通知和警告。如下图所示,假设地图上有三个商场,当用户进入某个商场的时候,手机自动收到相应商场发送的优惠券push消息。地理围栏应用非常广泛,当今移动互联网主要app如美团、大众点评、手淘等都可看到其应用身影。 图1 地理围栏示意图...

u011250186的博客 1192

CMOS Sensor的调试经验分享

我这里要介绍的就是CMOS摄像头的一些调试经验。 首先,要认识CMOS摄像头的结构。我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头、感应器和图像信号处理器构成。一般情况下,集成好的模组我们只看到外面的镜头、接口和封装壳,这种一般是固定焦距的。有些厂商只提供芯片,需要自己安装镜头,镜头要选择合适大小的镜头,如果没有夜视要求的话,最好选择带有红外滤光的镜头,因为一般的sensor都...

camerall 3764

【树的深度优先遍历和宽度优先遍历的时间复杂度】

无

bei2002315的博客 768

GEE APP:基于GEE的红树林监测平台

本文将介绍如何利用Google Earth Engine平台,结合Landsat系列卫星影像和SRTM高程数据,实现红树林分布的动态监测与变化分析。

此星光明博客 160

华为OD机试 - 素数之积 - 数学问题(Java 2025 A卷 100分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 2133

一个正经的前端学习 开源 仓库(阶段二十五)

低调务实优秀中国好青年 (简介) && 附加答案中文 | English地址 ⬇️github.com/webVueBlog/…一个 ☝️ 正经的前端学习 开源 仓库,启发来自 淘宝大佬 @冴羽 ,初心做一个真正能帮助到大家的仓库。(非常口语化的,手写总结)????:我是哪吒:如果你所学的东西 处于喜欢 才会有强大的动力支撑。???? 交流讨论 && ...

程序员哆啦A梦,蓝胖子 275

自定义View系列教程04--Draw源码分析及其实践

通过之前的详细分析,我们知道:在measure中测量了View的大小,在layout阶段确定了View的位置。 完成这两步之后就进入到了我们相对熟悉的draw阶段,在该阶段真正地开始对视图进行绘制。按照之前的惯例,我们来瞅瞅View中draw( )的源码 public void draw(Canvas canvas) { final int privateFlags = mPriv

谷哥的小弟 2万+

剑指offer之js版

本文仅为刷题整理以供自己后续复习,难易程度为本人自身感受,与官方无关。有错误之处请指出!

qq_38652677的博客 1708

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

程序员面试的注意事项(三):高质量的代码

程序员面试的注意事项(三):高质量的代码 【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权); 本博客的内容来自于程序员面试的注意事项(二):面试需要的基础知识; 学习、合作与交流联系q384660495; 本博客的内容仅供学习与参考,并非营利; 文章目录程序员面试的注意事项(三):高质量的代码一、代码的规范性二、代码的完整性三、3种错误处理的方法 一、代码的规范性 代码书写清晰 规范的代码布局清晰(空格) 规范的代码命名合理 二、代码的完整性 普通功能测试的测试用例 边界值的测

qq_44159782的博客 259

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【剑指Offer】解题思路拆解Java版——第三期

下面这段时间带来的是对于剑指Offer(第二版)一书中的算法题目进行阅读并分享。原书中一共66道题目,我们就一天11道,用六天的时间来进行讲解,最后一天来个总结,争取在一周的时间内介绍完这66道经典题目。要是喜欢的欢迎关注公众号《Java冢狐》来追更! 今天是剑指Offer的第三期, 另外由于原书是C++代码编写而成,这边我们用Java来实现一遍,顺便说一下相关的面试知识点,一起进行面试前的复习。希望大家能够喜欢。 另外有些地方的讲解可能并不是十分到位,在此更推荐更大家去看原书。 那么话不多少,让我们开始今

冢狐的私人空间 236

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

《剑指offer》答案整理

  第一题,二维数组中的查找:https://blog.youkuaiyun.com/a745233700/article/details/82108738 第二题,替换空格:https://blog.youkuaiyun.com/a745233700/article/details/82730804 第三题,从头到尾打印链表:https://blog.youkuaiyun.com/a745233700/article/det...

张维鹏的博客 3041

python--剑指offer--题目目录-学习计划

第一天第二天第三天第四天第五天第六天第七天第八天第九天第十天第十一天第十二天第十三天第十四天第十五天第十六天第十七天第十八天第十九天第二十天第二十一天第二十二天第二十三天第二十四天第二十五天第二十六天第二十七天。

Chasing__Dreams的博客 563

剑指Offer系列刷题笔记汇总

本文转自:个人网站:点击查看 一前言 二总结 链表-8道 二叉树12道 二叉搜索树3道 数组11道 字符串8道 栈3道 递归4道 回溯法2道 其他15道 一、前言 本系列文章为《剑指Offer》刷题笔记。 刷题平台:牛客网 书籍下载:共享资源 刷题刷的比较慢,花费了两个多月,终于将所有题目过了一遍,牛客网一共有66道题,这次刷题主要使用C++,接下来会使用Python...

Jack-Cui 5万+

150页的剑指Offer解答PDF,它来了!!!

它来了!!! 终于整理出了第一版剑指Offer的PDF,主要以Java语言为主,一共67道题,100多页。 领取方式如下(无套路直接获取百度网盘的 ???? 链接,如果链接失效可以直接找我): 【秦怀杂货店】公众号内发送:剑指Offer 刷题仓库:CodeSolution ,具体的分类如下: 数组 剑指Offer(二)–二维数组中的查找 剑指Offer(十三)–调整数组顺序使奇数位于偶数前面 剑指Offer(十九)-- 顺时针打印矩阵 剑指Offer(二十八)-- 数组中次数出现超过一半的数字 剑指

秦怀杂货店 6976

leetcode剑指offer合集+题解

目录一、用两个栈实现队列题目解题思路AC代码二、包含min函数的栈题目解题思路AC代码三、从尾到头打印链表题目解题思路AC代码四、反转链表题目解题思路AC代码五、复杂链表的复制题目解题思路AC代码六、替换空格题目解题思路AC代码七、左旋转字符串题目解题思路AC代码八、数组中重复的数字题目解题思路AC代码九、I. 在排序数组中查找数字题目解题思路AC代码十、II. 0~n-1中缺失的数字题目解题思路AC代码十一、二维数组中的查找题目解题思路AC代码十二、旋转数组的最小数字题目解题思路AC代码十三、第一个只出现

陈颜的博客 3891

剑指offer C++、Python版

一前言 二总结 链表-8道 二叉树12道 二叉搜索树3道 数组11道 字符串8道 栈3道 递归4道 回溯法2道 其他15道 一、前言 本系列文章为《剑指Offer》刷题笔记。 刷题平台:牛客网 书籍下载:共享资源 刷题刷的比较慢,花费了两个多月,终于将所有题目过了一遍,牛客网一共有66道题,这次刷题主要使用C++,接下来会使用Python重新过一遍,并对这些写过的文章进行更新。同...

YLC_慕类的博客 975

《剑指offer》解法总结

剑指offer这本书之前看过一次,今天又在牛客网上完成了最后一道题的编程。 第一次这本书,对于思路和编程都是难点;第二次在牛客网上刷题的时候,越来越感觉编程并非难点,难点在于没有解题思路,下不了手。如果知道了解题思路,大部分题目解出来只是时间问题。如果你也是这种情况,编程问题不大就是没有思路,那欢迎你来看我的文章。如果本身不会写代码,还是自己去做一遍的比较好。 在做完最后一题以后,返回去看前面...

微鉴道长的博客 1607

一个正经的前端学习 开源 仓库(阶段二十六)

低调务实优秀中国好青年 (简介) && 附加答案中文 | English地址 ⬇️github.com/webVueBlog/…一个 ☝️ 正经的前端学习 开源 仓库,启发来自 淘宝大佬 @冴羽 ,初心做一个真正能帮助到大家的仓库。(非常口语化的,手写总结)????:我是哪吒:如果你所学的东西 处于喜欢 才会有强大的动力支撑。???? 交流讨论 && ...

程序员哆啦A梦,蓝胖子 703

剑指offer题目

剑指offer 链表(8道): 三:从尾到头打印链表 十四:链表中倒数第k个结点 十五:反转链表 十六:合并两个排序的链表 二十五:复杂链表的复制 三十六:两个链表的第一个公共结点 五十五:链表中环的入口结点 五十六:删除链表中重复的结点 二叉树(12道): 四:重建二叉树 十七:树的子结构 十八:二叉树的镜像 二十二:从上往下打印二叉树 二十四:二叉树中和为某一值的路径 三十八:二叉树的深度 三十九:平衡二叉树 五十七:二叉树的下一个结点 五十八:对称的二叉树 五十九:按之字顺序打印二叉树 六十:把二叉树

wowenlong的博客 1939

剑指offer

第一题,二维数组中的查找:https://blog.youkuaiyun.com/a745233700/article/details/82108738 第二题,替换空格:https://blog.youkuaiyun.com/a745233700/article/details/82730804 第三题,从头到尾打印链表:https://blog.youkuaiyun.com/a745233700/article/details/...

代码学习之路的博客 576
上一篇: MySQL数据库的四种隔离级别
下一篇: 二叉树的镜像(二十六)
software_Manito
博客等级 码龄8年 6粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值