二叉树的基本操作以及一些二叉树相关例题

目录

1,获取树中节点的个数

2,获取叶子节点的个数

3,获取叶子节点的个数(2)

4,获取第K层节点的个数

5,获取二叉树的高度

6,检测值为value的元素是否存在

例题1:相同的树问题

例题2:另一棵树的子树问题

例题3:翻转二叉树

例题4:对称二叉树

1,获取树中节点的个数

public int nodeSize;public void size(TreeNode root){if(root==null){return;}nodeSize++;size(root.left);size(root.right);};

2,获取叶子节点的个数

 public  int leafSize;public void getLeafNodeCount(TreeNode root){if(root==null){return;}if(root.left==null&&root.right==null){leafSize++;}getLeafNodeCount(root.left);getLeafNodeCount(root.right);};

3,获取叶子节点的个数(2)

 public int getLeafNodeCount1(TreeNode root){if(root==null){return 0;}if(root.left==null&&root.right==null){return 1;}return getLeafNodeCount1(root.left)+getLeafNodeCount1(root.right);};

4,获取第K层节点的个数

public int getKLevelNodeCount(TreeNode root,int k){if(root==null){return 0;}if(k==1){return 1;}return getKLevelNodeCount(root.left,k-1)+getKLevelNodeCount(root.right,k-1);};

5,获取二叉树的高度

public int  getHeight(TreeNode root){if(root==null){return 0;}int leftSize =getHeight(root.left);int rightSize=getHeight(root.right);return Math.max(leftSize,rightSize)+1;};

6,检测值为value的元素是否存在

public TreeNode find(TreeNode root, int val){if(root==null){return null;}if(root.val==val){return root;}TreeNode leftVal=find(root.left,val);if(leftVal!=null){return leftVal;}TreeNode rightVal=find(root.right,val);if(rightVal!=null){return rightVal;}return null;};

例题1:相同的树问题

100. 相同的树 - 力扣(LeetCode)

这个例题需要首先考虑的是根的三种情况

第一种是一个为空一个不为空,则不是两个相同的树。

第二种是如果两个都为空,则是相同的树。

第三种是两个都不为空,值不一样,不是两课相同的树。

class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null&&q!=null||p!=null&&q==null){
return false;
}if(p==null&&q==null){return true;
}
if(p.val!=q.val){return false;
}
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);}
}

例题2:另一棵树的子树问题

572. 另一棵树的子树 - 力扣(LeetCode)

这个题首先我们考虑他们是否相同,可以利用例题1的方法进行判断,第二种情况就是左边的是它的左子树,第三种情况就是右边的是它的右子树。

 public boolean isSubtree(TreeNode root, TreeNode subRoot) {if(root==null){return false;}if(isSameTree(root,subRoot)){return true;}if(isSubtree(root.left,subRoot)){return true;}if(isSubtree(root.right,subRoot)){return true;}return false;}public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null&&q!=null||p!=null&&q==null){
return false;
}if(p==null&&q==null){return true;
}
if(p.val!=q.val){return false;
}
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);}

例题3:翻转二叉树

226. 翻转二叉树 - 力扣(LeetCode)

这个题需要找一个临时变量,然后进行交换。

 public TreeNode invertTree(TreeNode root) {
if(root==null){return null;
}
invertTree(root.left);
invertTree(root.right);
TreeNode tmp=root.left;
root.left=root.right;
root.right=tmp;
return root;}

例题4:对称二叉树

101. 对称二叉树 - 力扣(LeetCode)

这个题我们首先进行结构上的判断,首先判断root节点是否为空,如果为空返回true,然后判断左右子树的节点,首先看左右子树是否为空,然后判断左右子树的值。

 public boolean isSymmetric(TreeNode root) {if(root==null){return true;}return isSymmetricChild(root.left,root.right);}public boolean isSymmetricChild(TreeNode leftTree,TreeNode rightTree){
if(leftTree==null&&rightTree!=null||leftTree!=null&&rightTree==null){return false;
}if(leftTree==null&&rightTree==null){return true;
}
if(leftTree.val!=rightTree.val){return false;
}return isSymmetricChild(leftTree.left,rightTree.right)&&
isSymmetricChild(leftTree.right,rightTree.left);}

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

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

相关文章

招聘主播?小心是大陷阱!!!

高薪招聘主播的骗局通常涉及一系列精心设计的步骤,旨在引诱求职者上钩并从中获利。以下是这种骗局常见的几个关键环节: 首先,骗子会通过各种渠道发布诱人的招聘信息,声称正在寻找有潜力的主播,并承诺提供高额的底薪和…

MySQL UPDATE查询的用法和注意事项

MySQL是一种流行的关系型数据库管理系统,其中UPDATE查询是用于修改表中数据的重要操作。通过使用UPDATE查询,可以更新表中的记录,实现数据的动态更新和修改。本文将总结MySQL UPDATE查询的用法和注意事项,帮助读者更好地理解和应用…

虚拟3D沉浸式展会编辑平台降低了线上办展的门槛

在数字化浪潮的引领下,VR虚拟网上展会正逐渐成为企业展示品牌实力、吸引潜在客户的首选平台。我们与广交会携手走过三年多的时光,凭借优质的服务和丰富的经验,赢得了客户的广泛赞誉。 面对传统展会活动繁多、企业运营繁忙的挑战,许…

【绝对有用】刚刚开通的GPT-4o计算这种数学题目出现问题了

欢迎关注如何解决以上问题的方法:查看个人简介中的链接的具体解决方案

[Qt的学习日常]--窗口

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、窗口的分…

全面了解虚拟线上会议室的核心功能和优势,助力企业高效协作

在现代办公环境中,虚拟线上会议室日益普及,成为企业沟通协作的重要工具。虚拟会议室的出现不仅简化了传统会议的复杂流程,还提供了一系列优势功能,提升了用户的会议体验。 一、虚拟线上会议室的优势功能 1、实时音视频会议 虚拟线…

全网最易懂,开源时序数据库influxDB,实际应用评测

前言: 当今是信息爆炸的时代,在处理高频数据时,关系型数据库oracle/mysql明显表现出乏力,因秒级、毫秒级高频数据,分分钟可以把关系型数据库的表塞爆。在日常生活工作中,我们经常会遇到哪些需要高频分析的场…

[自动驾驶 SoC]-3 英伟达Orin

NVIDIA Jetson AGX OrinTM series (资料来源:nvidia-jetson-agx-orin-technical-brief.pdf) 1 整体介绍 1) Orin SoC结构 Orin SoC,如下图所示,由一个NVIDIA Ampere architecture GPU, Arm Cortex-A78AE CPU, 下一代深度学习核视觉处理加速…

华为 IPV6 配置

[r1]ipv6 必须先在设备上开启IPV6服务 [r1]interface GigabitEthernet 0/0/1 r1-GigabitEthernet0/0/1]ipv6 enable 再在接口上激活IPV6服务,才能配置ipv6地址 配置 ipv6 地址 [r1-GigabitEthernet0/0/1]ipv6 address 2001::1/64 [r1-GigabitEthernet0/0/…

企业防盗版,如何保障上网安全

信息化的发展企业日常办公越来越依赖互联网。然而,终端及普通PC在访问互联网过程中,会面临各种不容忽视的风险。这些风险包括: 员工主动故意的数据泄漏:员工可能故意泄露敏感信息。后台应用程序外发信息:一些应用程序…

代码覆盖率:衡量测试的有效性

在软件开发领域,确保代码的可靠性和稳健性至关重要。实现这一目标的关键实践之一是通过测试。但是,测试本身需要进行测量和评估,以确保其有效性。这就是代码覆盖率发挥作用的地方。代码覆盖率是一种指标,它量化了测试期间程序源代…

Qt正则表达式

需求:对输入的内容进行限制 只能以字母或下划线开始不能以数字开始 不能有中文 字母,数字,下划线混合使用 QRegExp rx("^[A-Za-z_][A-Za-z0-9_]*$");QRegExpValidator validator(rx);QLineEdit edit;edit.setValidator(&va…

荷兰花海元宇宙:探索虚拟世界的花卉之美

随着科技的不断发展,元宇宙已经成为了一个热门话题。在这个虚拟世界中,人们可以体验到许多现实生活中无法实现的事物。而荷兰花海元宇宙则是一个将现实世界中的花卉美景与虚拟世界相结合的创新项目,让人们在元宇宙中也能欣赏到荷兰花海的美丽…

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程 在遥感影像上人工制作分类数据集采用python+gdal库制作数据集挑选分类模型(RF、KNN、SVM、逻辑回归)选择随机森林模型建模分类遥感图像预测在遥感影像上人工制作分类数据集 1.新建shp文件 地理坐标系保持和影像…

本地大模型服务 Ollama:从安装到使用

文章目录 前言一、下载安装1.1 官网安装1.2 压缩包安装1.3 docker 安装二、命令行使用2.1 常用命令2.2 模型列表2.3 使用三、Open-WebUI3.1 安装3.2 修改语言3.3 使用参考前言 Ollama 是专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计的开源框架,它有如下几个特点…

如何应对 Android 面试官 -> MVVM 实战一个新闻客户端 (上)

前言 本章我们基于重构的方式进行一个 MVVM 的实战,我们将一个新闻列表的普通实现,一步一步的改造成 MVVM 的架构模式,一共分为上中下三个章节; 传统方式实现 首先咱们来看具体实现的最终效果,就是一个新闻列表页面&a…

connect-caption-and-trace——用于共同建模图像、文本和人类凝视轨迹预测

介绍 论文地址:https://arxiv.org/abs/2105.05964 源码地址:https://github.com/facebookresearch/connect-caption-and-trace 在过去,计算机视觉和自然语言处理领域的模型和算法的发展只有偶尔的重叠,但近年来,这两…

python-04

str.spilt() str.spilt(str" ", num string.count(str)); str:分隔符,默认为所有的空字符,包括空格、换行符"\n"、制表符"\t"等。 num:分隔次数 str "小时候 总有他们在耳边叮咛嘱咐 小…

案例分享:高科技企业产品管理部门设置和产品经理岗位设置

汉捷咨询曾遇到过一则有关产品管理部门建设和产品经理岗位设置的典型案例,本文中与大家分享,希望能为大家带来一些思考和启发。 A公司决策层最近为产品管理部门设置的事情颇为头痛。A公司是北京一家IC设计企业,多年来排名行业前3名&#xff…

opencv 打开图片后,cv::mat存入共享内存的代码,如何设置队列?

参考 https://blog.csdn.net/BrilliantAntonio/article/details/120606129 分析 执行Add操作时,随机产生一个大写英文字母模拟产品,放入缓冲区,同时调整队尾指针end.执行Remove操作时,将当前缓冲区资源清空,同时调整…