面试题18:树的子结构

《数据结构》04-树4 是否同一棵二叉搜索树 题目 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。 输入格式: 输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要... 阅读详情

题目:输入两颗二叉树A和B,判断B是不是A的子结构。二叉树的节点定义如下:

struct BinaryTreeNode{
    int value;
    BinaryTreeNode* left;
    BinaryTreeNode* right;
    BinaryTreeNode(int data=int()):value(data),left(NULL),right(NULL)
    {}
};

分析

要判断B是不是A的子结构,也就是要判断B是不是 A的子树。我们可以先遍历A,如果某一个S节点的value和B树的根节点相同,就判断S和B的左右子树是否相等,如果相等,B就是A的子结构;否则跳过S继续建立A,直到遍历完成。

代码如下:

bool HasSubTree(BinaryTreeNode* root1,BinaryTreeNode* root2)
{
    if(root1==NULL)
    {
        if(root2==NULL)
            return true;
        else
            return false;
    }
    if(root2==NULL)
        return true;
    if(root1->value==root2->value)
    {
        if(HasSubTree(root1->left,root2->left) &&
                HasSubTree(root1->right,root2->right))
        {
            return true;
        }
        else
        {
            if(HasSubTree(root1->left,root2) || HasSubTree(root1->right,root2))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    else
    {
        if(HasSubTree(root1->left,root2) || HasSubTree(root1->right,root2))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

以上

如果你有任何想法或是可以改进的地方,欢迎和我交流!

完整代码及测试用例在github上:点我前往

Far planner 代码系列(33) 关于real_world_contour和contour_graph 我们知道far planner前部分的流程是这样子的: 对于特定的地图,如下: 我们要从surround_obs_cloud里抽取生成realworld_contour_,如下图所示: 在这时候,每个node的z坐标都是以机器人的高度定的。如图所示: 先去吃饭啦~待会回来在写 ... 阅读详情

相关推荐

在Wincc8.0的Wincc 3D Control控件中使用3D模型

如果之前没有在Blender中自定义光照,EnableBackground属性选择“是”,Wincc 3D Control会按一个均匀的光照强度渲染。Wincc8.0更新后提供了一个Wincc 3D Control控件来显示3D图像,但是该控件实际体验下来现阶段还存在功能不足、运行不稳定的问题。再把导出的dae文件复制进Wincc项目的GraCS文件夹中,文件名称复制进控件的SceneFile属性里。选择编辑模式,全选模型,点击网格→分离→按材质,分离出不同的部件(不同的部件最好使用不同的材质)。

ghoring的博客 7131

剑指offer刷题【16】

面试题32:从上到下打印二叉树 题目1:不分行从上到下打印二叉树。 从上到下打印二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 struct BinaryTreeNode { int m_nVaule; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; } 这种遍历是按层遍历 规律 每次打印一个节点时,如果该节点有子节点,则把该节点的子节点放到一个队列的末尾, 数据容器是一个队列,如何实现队列。STL中有一个deque两端都可以进出的队

laosiji150214的博客 225

matlab内读取文件目录时斜杠和反斜杠的使用

@matlab内读取文件目录时斜杠和反斜杠的使用TOC matlab内读取文件目录时,斜杠和反斜杠的使用 最近被斜杠和反斜杠弄晕了,于是总结了一下,在此和大家分享一下。 代码 clear; clc; close all; I1= imread('..\zs1.jpg'); %和代码文件夹同目录的图片 (纯反斜杠) I2= imread('../zs2/zs2.j...

weixin_44456694的博客 6572

《剑指Offer》面试题18:树的子结构

《剑指Offer》 P117面试题18:树的子结构题目:

(●—●) 339

树莓派CM4 PCIe扩展方案与ASM1184e芯片应用

PCIe(Peripheral Component Interconnect Express)是计算机硬件中重要的高速串行总线标准,广泛应用于存储、网络等设备连接。其核心原理是通过差分信号实现高带宽传输,PCIe Gen2 x1的理论带宽可达5Gbps。在嵌入式开发中,PCIe扩展技术能有效解决单板计算机接口不足的问题,特别适合树莓派等微型平台。ASMedia ASM1184e作为PCIe交换芯片,可将单个接口扩展为多个,支持热插拔且免驱动,极大提升了工程灵活性。通过PCIe交换机方案,开发者能在树莓派CM

weixin_42602368的博客 421

AI 帮我写单测:pytest 覆盖率提升 40% 的协作日志

AI助力pytest测试覆盖率提升40%的实践总结 本文分享了作者通过AI协作提升Python项目测试覆盖率的实践经验。初始测试覆盖率仅45%的电商后端项目,通过系统化的AI协作策略(代码分析、场景矩阵设计、迭代优化)实现了显著改进。AI不仅生成312个高质量测试用例,更提供了测试设计思路和最佳实践建议。最终覆盖率提升至85%,发现并修复23个潜在bug,效率提升3倍。文章详细展示了用户服务、订单服务等核心模块的测试案例,以及分层Fixture设计、参数化测试等高级技巧。关键成功因素包括明确的协作边界、迭代

摘星编程的博客 3273

面试题18 树的子结构

原文链接:http://ac.jobdu.com/problem.php?pid=1520 题目1520:树的子结构 题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构。 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行一个整数n,m(1 输出: 对应每个测试案例, 若B是A的子树输

再见了,过去的名字,新的奋斗开始啦! 432

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入CSSCA频谱-空间交叉注意力,含多种创新改进,小目标检测、图像分割、高光谱图像分类、语义分割任务任务涨点

🔥本文提出CSSCA(频谱-空间交叉注意力)模块,通过中心像素引导的光谱与空间交叉注意力机制,有效提升YOLO26模型的特征表达能力。该模块实现了光谱与空间信息的协同优化,能够自适应强化关键通道与重要空间区域,增强模型对小目标和复杂场景的感知能力。文章详细介绍了CSSCA的网络结构、工作原理及四大优势,包括精准特征表达、协同信息优化、小样本适应性和轻量化设计。同时提供了完整的代码实现和四种改进方案的YAML配置文件,包括基础版、增强版、C3k2融合版和C2PSA融合版,为YOLO26模型的性能提升

Ai缝合怪、助力小伙伴高效发论文 265

剑指Offer之面试题18:树的子结构

所有代码均通过G++编译器测试,仅为练手纪录。 //面试题18:树的子结构 //题目:输入两棵二叉树A和B,判断B是不是A的子结构。 //面试题18:树的子结构 //题目:输入两棵二叉树A和B,判断B是不是A的子结构。 bool TreeCompre(BinTreeNode *pRootTree,BinTreeNode *pSubTree) { if(NULL

Pillary的专栏 594

【DRAM存储器六十八】DDR5介绍--DQS Interval Oscillator—动态时序校准利器

DDR5内存采用DQS间隔振荡器(DQSIntervalOscillator)技术应对高速数据传输中的时序漂移问题。该技术通过测量DQS信号在可编程时间窗口内的振荡次数(16位计数值),动态监测温度/电压变化导致的DQS-DQ延迟偏移。控制器通过MPC命令启停振荡器,读取MR46/MR47寄存器获取计数值,并与基准值对比来调整DQS相位,确保数据采样窗口始终处于最佳位置。该机制使DDR5在8400MT/s高速率下仍能保持数据可靠性,有效补偿±0.48tCK的时序偏移。

highman110的博客 149

如何在非序列模式下使用类似图像模功能

如何在非序列模式下使用类似图像模功能

weixin_72050316的博客 552

剑指offer:面试题18——树的子结构

剑指offer:面试题18——树的子结构 题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NU...

MereX的博客 361

2022中山大学计算机技术专硕考研初试、复试经验帖

个人简介 推荐几个我自己感觉对考研非常有帮助的小助手吧。可以帮助节省时间! 考研时间规划总览 初试篇 数学 英语 政治 408 复试篇 机试 笔试 面试 关于选导师 个人感言

zik的博客 1万+

剑指offer-面试题 18:树的子结构

面试题 18:树的子结构 题目:输入两颗二叉树 A 和 B,判断 B 是不是 A 的子结构。

我的博客 455

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【面试题18】树的子结构

【题目描述】 输入两棵二叉树A和B,判断B是不是A的子结构。 【解决方案】 根据图示,用递归解决。 注意代码的鲁棒性,树的操作很可能会访问不存在的内存,必须做好对null的处理! 我的代码示例,仅供参考: 1 public static bool HasSubTree(BinaryTreeNode treeA, BinaryTreeNode treeB)...

aejt95023的博客 81

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

剑指offer面试题18:树的子结构

题目:输入两棵二叉树A和B,判断B是不是A的子结构。 算法分析:         要查找树A中是否存在和树B结构一样的子树,我们可以分为两步,第一步:在树A中找到和树B的根节点的值一样的节点R,第二步再判断树A中以R为根节点的子树是不是包含和树B一样的结构。 以上面两棵树为例来详细分析这个过程。首先我们试着在树A中找到值为8(树B的根节点的值)得节点。

做一名努力的通信程序员 596

面试题 18: 树的子结构

一. 题目 输入两棵二叉树A和B,判断B是不是A的子结构.代码请到我的代码库中下载 Point2Offer二. 代码package week_4;/**难度系数:*** * 剑指offer: 树的子结构 * 方法:递归,第一次判断找到根节点一样的节点,第二步比较左右子树结构是否相同,递归终止条件到达 * A或B的叶节点 * 测试用例:功能测试(是子结构/不是子结构/其中一棵树为空/单节点)

高筑墙,广积粮,缓称王 579

【剑指 Offer 学习】【面试题 18: 树的子结构】【思路】

题目: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)   思路: 若根节点相等,利用递归比较他们的子树是否相等 若根节点不相等,则利用递归分别在左右子树中查找。 详见代码,未添加测试用例   代码: package 树的子结构; import javax.sound.midi.Soundbank; /** * 输入两棵二叉树A,...

handsome_zan的博客 358

【剑指Offer学习】【面试题18 :树的子结构】

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

https://github.com/Wang-Jun-Chao 6008

剑指offer 面试题18 树的子结构

剑指offer 面试题18 树的子结构 面试题: 输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。 二叉树的定义如下: package algorithm.foroffer.top20;/** * Created by liyazhou on 2017/5/26. * 面试题 18:树的子结构 * * 题目: * 输入两棵二叉树 A 和 B,判断 B

LYZ 458

面试题18. 树的子结构

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val

两鬓已不能斑白的专栏 410
上一篇: 面试题17:合并两个排序的链表
下一篇: 面试题19:二叉树的镜像
SmartBrave
博客等级 码龄12年 25粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值