【数据结构二叉树OJ系列】5、相同的树和另一个树

news2024/11/16 21:55:02

  

目录

一、相同的树

二、另一个树的子树


一、相同的树

题述:

给定二叉树,检验他们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为他们是相同的。

示例1:

题中已给:

struct TreeNode
{
	int val;
	struct TreeNode* left;
	struct TreeNode* right;
};
bool isSameTree(struct TreeNode* p, struct TreeNode* q)

思路:

1、判断两棵子树时候都为空,是否一个为空另一个不为空 2、结构相同的情况下,对应比较每个节点对应的值是否相同。3、只要存在一处结构不同或一处值不同就返回false。

代码如下:

bool isSameTree(struct TreeNode* p, struct TreeNode* q)
{//总体类似于先序遍历
	//判断结构是相同
	if (p == NULL && q == NULL)
		return true;
	if (p == NULL && q != NULL)
		return false;
	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);

}

二、另一个树的子树

题述:

给定两个非空二叉树s和t,检验s中是否包含和t具有相同结构和节点值的子树,s的一个子树包含s的一个节点和这个节点的所有子孙,s也可以看做他自身的一颗子树。

示例1:

给定的树s:

给定的树t:

 返回true,因为t与s的一个子树拥有相同的结构和节点值。

示例2:

给定的树s:

给定的树t:

返回false

题中已给:

struct TreeNode
{
	int val;
	struct TreeNode* left;
	struct TreeNode* right;
};
bool isSubTree(struct TreeNode* s, struct TreeNode* t)

思路:

t与s中所有子树相比较,即找到以所有节点为根的树相比,直到找到相同的一部分,若所有的都找不到,则返回false。

代码如下:

bool isSubTree(struct TreeNode* s, struct TreeNode* t)
{
	if (s == NULL)
		return false;//如果s都为NULL了,t肯定就不是s的子树

	if (isSameTree(s, t))
		return true;
	
    //再看以s->left和s->right为根的子树的其中之一是否有子树t
	return isSubTree(s->left, t) || isSubTree(s->right, t);
}

 

 

 

 

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

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

相关文章

黑马大数据学习笔记0-环境配置

目录 设置VMware网络CentOS操作系统三台虚拟机系统配置:主机名、固定IP、SSH免密登录配置主机名映射配置SSH免密登录创建hadoop用户并配置免密登录JDK1.8环境部署防火墙、SELinux、时间同步设置快照 视频p3-p5 https://www.bilibili.com/video/BV1WY4y197g7?p3 设…

tomcat第1章 tomcat介绍、安装、部署项目

一、前言 我们在写javaweb程序的时候有没有考虑如果没有tomcat,我们怎么给客户端返回响应数据?既然能返回响应数据,为什么还要使用tomcat? 什么是tomcat,以及tomcat历史版本发展情况,每个版本servlet规范…

如何与ChatGPT愉快地聊天

原文链接:https://mp.weixin.qq.com/s/ui-O4CnT_W51_zqW4krtcQ 人工智能的发展已经走到了一个新的阶段,在这个阶段,人工智能可以像人一样与我们进行深度的文本交互。其中,OpenAI的ChatGPT是一个具有代表性的模型。然而&#xff0…

JavaFX学习:MVC模式中的PropertyValueFactory

PropertyValueFactory类是“TableColumn cell value factory”,绑定创建列表中的项。示例如下&#xff1a; TableColumn<Person,String> firstNameCol new TableColumn<Person,String>("First Name");firstNameCol.setCellValueFactory(new PropertyVal…

Blender基础入门(3):复杂建模技巧

文章目录 我个人的Blender专栏前言基础属性设置选择循环选择&#xff1a;Alt左键透视选择锁定物体编辑模式123快捷键按下/&#xff08;右侧Shift左边&#xff0c;<>按键右边&#xff09;&#xff0c;锁定物体先在物体模式选择物体&#xff0c;再到编辑模式就只会选择该物…

淘宝订单拉取更新历史状态~需求

&#x1f4da;目录 订单接口api需求问题解决 Map<String,TaobaoOrder> 订单接口api 可自行查询官网文档&#xff0c;点击进入 需求 通过接口中has_next 标识判断该时间断是否还有下一页数据,直到该值数据为false时,表面该时间范围内的订单数据获取完成. 拉取完成后需要对…

Maven工程开发中的继承与聚合

1. 聚合工程概念 设置一个空的maven工程&#xff0c;工程里面只有pom文件&#xff0c;另外将这个工程的打包方式设置为pom。 在聚合工程里面添加聚合工程里面管理的模块 2.聚合总结 3.继承 例如下面02工程继承上面的01工程&#xff0c;在02工程的pom文件中要配置要继承的父工…

分组统计--Pandas

1.groupby 1.1 函数功能 先对数据进行分组&#xff0c;然后在每个分组上运用聚合函数、转换函数 1.2 函数语法 DataFrame.groupby(byNone, axis0, levelNone, as_indexTrue, sortTrue, group_keysTrue, observedFalse, dropnaTrue)1.3 函数参数 参数含义by分组依据axis沿着…

【电子学会】2023年05月图形化一级 -- 找食物

找食物 1. 准备工作 &#xff08;1&#xff09;添加背景&#xff1a;Jungle&#xff1b; &#xff08;2&#xff09;删除小猫角色&#xff0c;添加角色&#xff1a;Dog2、Donut&#xff1b; 2. 功能实现 &#xff08;1&#xff09;点击绿旗&#xff0c;小狗的初始位置在舞…

打家劫舍(力扣)动态规划 JAVA

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存放金额的非…

从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145

目录 606. 根据二叉树创建字符串 - 力扣&#xff08;LeetCode&#xff09; 解析代码&#xff1a; 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 解析代码&#xff1a; 107. 二叉树的层序遍历 II - 力扣&#xff08;LeetCode&#xff09; 解析代码&…

倪海厦针灸大成学习笔记

学习倪海厦老师人纪针灸课程的学习笔记&#xff0c;比较粗糙&#xff0c;不一定准确&#xff0c;分享给大家&#xff0c;大家发现笔记中的错误&#xff0c;欢迎反馈&#xff01; Word文档链接 有需要的欢迎私信

VSCode控制台乱码解决

如果你试过很多方法依然解决不了乱码问题&#xff0c;不妨试试这个 设置完成后重启电脑 开机后查看一下当前的编码 打开VSCode试一下 不得不吐槽一下MS。。。。。。

虚幻引擎程序化资源生成框架PCG 之 UPCGBlueprintElement源码笔记(二)数据流

PCG节点处理的是数据流&#xff0c;也就是点云&#xff0c;点云到底是啥&#xff1f;笼统地说就是一个个携带着信息的点组成的集合。但是在具体是使用过程中&#xff0c;我们还得了解这些”携带着信息的点“是如何被层层包装起来的。本文中老王就和大家一边拆解源代码一边做实验…

以太网数据链路层相关技术(六)

目录 一、概述 二、MAC地址 2.1 概述 2.2 MAC地址的意义 三、共享介质型网络与非共享介质网络 四、VLAN技术 一、概述 在各设备之间的数据传输时&#xff0c;物理层和数据链路层是必不可少的。其中&#xff0c;物理层的通信媒介包括双绞线电缆、同轴电缆、光纤、电波以及…

Springcloud基础(4)-Ribbon负载均衡

负载均衡 1. Ribbon简单描述2. 在SpringCloud中查看相关处理源码3. ribbon的默认策略&#xff0c;懒加载3. 实操中的相关问题 1. Ribbon简单描述 Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具。Ribbon是Netflix发布的开源项目&#xff0…

MySQL第四天作业 单表查询和多表查询

单表查询 创建表 CREATE TABLE emp (empno int(4) NOT NULL,ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,mgr int(4) NULL DEFAULT NULL,hiredate d…

【电子学会】2023年05月图形化一级 -- 舞蹈演出

舞蹈演出 1. 准备工作 &#xff08;1&#xff09;删除小猫角色&#xff1b; &#xff08;2&#xff09;添加角色Ballerina&#xff0c;为角色添加声音Bossa Nova&#xff1b; &#xff08;3&#xff09;添加背景Theater和Concert。 2. 功能实现 &#xff08;1&#xff09…

STC89C52---定时器,中断

目录 一:定时器 1:简历 2:定时器/计数器0/1和相关寄存器 A:介绍 B: 相关寄存器 C:基本原理 3:定时器/计数器控制寄存器TCON 4:定时器/计数器工作模式寄存器TMOD (1)门控制 (2):使用STC-iSP软件生成配置 (2):使用STC-iSP软件定时器 二:中断 1:简历 B:中断寄存器 2…

【电子学会】2023年05月图形化四级 -- 还原轨迹

还原轨迹 1. 准备工作 &#xff08;1&#xff09;删除小猫&#xff1b; &#xff08;2&#xff09;从角色库添加“Butterfly 1”角色&#xff1b; &#xff08;3&#xff09;保留白色背景。 2. 功能实现 &#xff08;1&#xff09;点击绿旗&#xff0c;清除舞台&#xff…