链式二叉树oj题

1.输入k ,找第k层节点个数

int TreeKlevel(BTNode*root,int k) {if (root == NULL) {return 0;}if (k == 1) {return 1;}return TreeKlevel(root->left, k - 1)+TreeKlevel(root->right, k - 1);
}

在这里我们要确定递归子问题,第一个就是NULL时返回,还有一个就是k=1时就是我们要找的层数。

2.输入一个数,查找该数,找到了返回其地址。

BTNode* TreeFind(BTNode* root, int x) {if (root == NULL) {return NULL;}if (root->val == x) {return root;}BTNode* ret1 = TreeFind(root->left, x);if (ret1)return ret1;BTNode* ret2 = TreeFind(root->right, x);if (ret2)return ret2;return NULL;
}

在这里我们需要弄明白的是,在某个开辟的栈帧中找到了该数据,直接返回其指针,是得不到它的地址的。

3.判断两棵树是相同的

bool isSametree(BTNode* root1, BTNode* root2) {//都为空if (root1 == NULL && root2 == NULL) {return true;}//其中一个为空if (root1 == NULL || root2 == NULL) {return false;}if (root1->val != root2->val) {//判断值是否相同return false;}return isSametree(root1->left, root2->left) &&isSametree(root1->right, root2->right);
}

4.判断是否为镜像/对称二叉树,也就是左右子树是否相同

bool _isSymmetric(BTNode* root1, BTNode* root2) {//根比较//左子树和右子树比较//右子树和左子树比较//都为空if (root1 == NULL && root2 == NULL) {return true;}//一个为空一个不为空if (root1 == NULL || root2 == NULL) {//短路求值return false;}if (root1->val != root2->val) {return false;}return _isSymmetric(root1->left, root2->right) &&_isSymmetric(root1->right, root2->left);
}
bool isSymmetri(BTNode* root) {return _isSymmetric(root->left, root->right);//将根的两个子树传递给子函数
}

5.在一棵树上找另一棵树

bool issubTree(BTNode* root, BTNode* subroot) {if (root == NULL)return false;if (root->val == subroot->val&& isSametree(root, subroot)) {//当遍历时发现根相同时才开始遍历比较//为了防止不止一处地方根相同且有一处根相同的地方并不完全相等,所以我们需要这两个条件同时成立才返回true.return true;}//遍历return issubTree(root->left,subroot) || issubTree(root->right,subroot);
}

这里与其他函数结合可以更好地解决问题。

谢谢

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

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

相关文章

26_嵌入式系统网络接口

以太网接口基本原理 IEEE802标准 局域网标准协议工作在物理层和数据链路层,其将数据链路层又划分为两层,从下到上分别为介质访问控制子层(不同的MAC子层,与具体接入的传输介质相关),逻辑链路控制子层(统一的LLC子层,为上层提供统…

非同步升压转换器,效率95%你信吗?ETA1611输出电流2A, 22V DCDC

前言: 截止24年7月7日某创报价:500: ¥0.7856 / 个 建议使用前同时了解下方器件。 2毛钱的SOT23-5封装28V、1.5A、1.2MHz DCDC转换器用于LCD偏置电源和白光LED驱动等MT3540升压芯片 描述 ETA1611 SOT23-6封装 丝印GVYW&#xff0…

c进阶篇(三):字符串函数

1.strlen: strlen - C Reference strlen 函数是一个标准库函数&#xff0c;用于计算以 null 结尾的字符串的长度&#xff0c;也就是字符串中实际字符的数量&#xff0c;不包括最后的 null 终止符 \0。它定义在 <string.h> 头文件中。 函数原型:size_t strlen(const ch…

一篇就够了,为你答疑解惑:锂电池一阶模型-在线参数辨识(附代码)

锂电池一阶模型-在线参数辨识 背景在线 VS 离线 参数辨识递推最小二乘法一阶戴维南Z域离散表达式 背景 锂电池一阶戴维南等效模型的基础知识和离线辨识方法&#xff0c;已经在上一期非常详细地讲解了一轮&#xff08;上期文章请戳此处&#xff09;&#xff0c;本期继续讲解一下…

【数据结构】经典链表题目详解集合(反转链表、相交链表、链表的中间节点、回文链表)

文章目录 一、反转链表1、程序详解2、代码 二、相交链表1、程序详解2、代码 三、链表的中间节点1、程序详解2、代码 四、回文链表1、程序详解2、代码 一、反转链表 1、程序详解 题目&#xff1a;给定单链表的头节点 head &#xff0c;请反转链表&#xff0c;并返回反转后的链…

理解注意力机制与多头注意力:深度学习中的“聚焦术”

Attention 理解注意力机制与多头注意力&#xff1a;深度学习中的“聚焦术”什么是注意力机制&#xff1f;**核心思想** 什么是多头注意力机制&#xff1f;**工作原理** **多头注意力的优势****应用领域****结论** 理解注意力机制与多头注意力&#xff1a;深度学习中的“聚焦术”…

MLIR

方言 简介操作块区域值范围Control Flow and SSACFG Regions 操作与多区域&#xff08;Operations with Multiple Regions&#xff09;闭包&#xff08;Closure&#xff09;图形区域&#xff08;Graph Regions&#xff09;参数和结果&#xff08;Arguments and Results&#xf…

vscode编辑keil工程

1.编码问题 通常keil默认amsi格式&#xff0c;vscode默认utf-8格式&#xff0c;直接打开会出现乱码问题。 解决过程&#xff1a; 1.想着创建keil阶段&#xff0c;就使用utf-编码格式。 在区域设置里面“选择beta版&#xff0c;提供全球utf-8 提供全球语言支持”&#xff0c…

JVM专题之内存模型以及如何判定对象已死问题

体验与验证 2.4.5.1 使用visualvm **visualgc插件下载链接 :https://visualvm.github.io/pluginscenters.html https://visualvm.github.io/pluginscenters.html **选择对应JDK版本链接--->Tools--->Visual GC** 2.4.5.2 堆内存溢出 * **代码** java @RestCont…

从0制作自己的ros导航小车(01、准备工作)

@TOC 前言 本篇说明需要具备的知识和软硬件。可以不用全部具备,但基础要有,写的不是非常详细。 本小车分为上位机与下位机两部分,上位机使用旭日x3派运行ros进行开发和算法实现,下位机使用stm32驱动底盘和传感器数据采集。 一、知识 ①stm32部分(当然也可以使用其它控制…

uniapp/Android App上架三星市场需要下载所需要的SDK

只需添加以下一个权限在AndroidManifest.xml <uses-permission android:name"com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY"/>uniapp开发的&#xff0c;需要在App权限配置中加入以上的额外权限&#xff1a;

1958.力扣每日一题7/7 Java(100%解)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 思路 解题方法 时间复杂度 空间复杂度 Code 思路 首先将指定位…

游戏开发面试题5

什么是进程、线程、协程 进程 进程是计算机的一种基本运行单位&#xff0c;由操作系统管理资源和分配资源的基本单位&#xff0c;进程可以理解为一个正在运行的程序 线程 线程是计算机的一种独立执行单元&#xff0c;是操作系统能够进行运算调度的基本单位&#xff0c;线程之间…

排序 -- 手撕归并排序(递归和非递归写法)

一、基本思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有…

汉诺塔与青蛙跳台阶

1.汉诺塔 根据汉诺塔 - 维基百科 介绍 1.1 背景 最早发明这个问题的人是法国数学家爱德华卢卡斯。 传说越南河内某间寺院有三根银棒&#xff0c;上串 64 个金盘。寺院里的僧侣依照一个古老的预言&#xff0c;以上述规则移动这些盘子&#xff1b;预言说当这些盘子移动完毕&am…

SpringMVC(2)——controller方法参数与html表单对应

controller方法参数与html表单对应 0. User实体类 import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable; import java.util.Date; import java.util.List; import java.util.Map;public class User implements Serializable {private …

ES7210高性能四通道音频ADC转换模拟麦克风为IIS数字咪头

特征 高性能多位 Delta-Σ 音频 ADC 102 dB 信噪比 -85 分贝 THDN 24 位&#xff0c;8 至 100 kHz 采样频率 I2S/PCM 主串行数据端口或从串行数据端口 支持TDM 256/384Fs、USB 12/24 MHz 和其他非标准音频系统时钟 低功耗待机模式 应用 麦克风阵列 智能音箱 远场语音捕获 订购…

微服务的分布式事务解决方案

微服务的分布式事务解决方案 1、分布式事务的理论模型1.1、X/Open 分布式事务模型1.2、两阶段提交协议1.3、三阶段提交协议 2、分布式事务常见解决方案2.1、TCC补偿型方案2.2、基于可靠性消息的最终一致性方案2.3、最大努力通知型方案 3、分布式事务中间件 Seata3.1、AT 模式3.…

人工智能在软件开发中的角色:助手还是取代者?

人工智能在软件开发中的角色&#xff1a;助手还是取代者&#xff1f; 随着科技的飞速发展&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;在软件开发领域的应用越来越广泛。从代码生成、错误检测到自动化测试&#xff0c;AI工具正成为开发者的重要助手。然而&#xf…

Postgresql - 用户权限数据库

1、综述 在实际的软件项目开发过程中&#xff0c;用户权限控制可以说是所有运营系统中必不可少的一个重点功能&#xff0c;根据业务的复杂度&#xff0c;设计的时候可深可浅&#xff0c;但无论怎么变化&#xff0c;设计的思路基本都是围绕着用户、部门、角色、菜单这几个部分展…