news 2026/5/1 4:42:46

基础二叉树算法题(带讲解)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基础二叉树算法题(带讲解)

目录

1.检查两颗树是否相同

2.判断这课树是否为另一颗树的子树

3.翻转二叉树

4.对称二叉树


1.检查两颗树是否相同

有树A和树B检查两颗树是否相同呢?

分析:两颗树是否相同需要先判断两棵树结构是否相同,在确认包含的值是否相同。

如:从根结点开始,A的根和B的根都不为空或者都为空则结构相同,若A和B一个为空一个不为空则结构不同为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.leftTree,q.leftTree) && isSameTree(p.rightTree,q.rightTree); }

2.判断这课树是否为另一颗树的子树

有树A和树B,B树是否为A的子树呢?

分析:首先判断A树和B树是否相同,相同则B树是A树的子树,不同则对A使用前序遍历到下一个节点来和B树进行判断,代码上还是和上一题还是很像的

//判断一颗树是否为另一颗的子树 public boolean isSubTree(TreeNode root,TreeNode subroot){ if (root == null){ return false; } if (isSameTree(root,subroot)){ return true; } if (isSubTree(root.leftTree,subroot)){ return true; } if (isSubTree(root.rightTree,subroot)){ return true; } return false; }

3.翻转二叉树

如何将二叉树的左子树和右子树互换呢?

分析:定义一个变量tmp用来交换左右子树的地址,然后使用递归前序遍历,

public TreeNode invertTree(TreeNode root){ if (root == null ){ return null; } TreeNode tmd = root.leftTree; root.leftTree = root.rightTree; root.rightTree = tmd; invertTree(root.leftTree); invertTree(root.rightTree); return root; }

4.对称二叉树

判断一颗二叉树为对称的。

分析:使用第一题两颗树是否相同的思路做,但有一些小改动,如我是需要左子树的左结点和右子树的右结点相等,其中我们还需要提取出左右子树的地址用另一个函数来实现,

//对称二叉树 public boolean isSymmetric(TreeNode root){ if (root == null){ return true; } return isSymmetricChild(root.leftTree,root.rightTree); } public boolean isSymmetricChild(TreeNode left,TreeNode right){ if ((left != null && right == null) || (left == null && right != null)){ return false; } if (left == null && right == null){ return true; } if (left.val != right.val){ return false; } return isSymmetricChild(left.leftTree,right.rightTree) && isSymmetricChild(left.rightTree,right.leftTree); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 15:27:34

Windows字体终极优化:MacType让你的文字焕然一新

Windows字体终极优化:MacType让你的文字焕然一新 【免费下载链接】mactype Better font rendering for Windows. 项目地址: https://gitcode.com/gh_mirrors/ma/mactype 还在为Windows系统上模糊不清的字体显示而烦恼吗?想要获得类似macOS那样清晰…

作者头像 李华
网站建设 2026/4/22 14:58:27

Obsidian终极PDF导出指南:简单三步打造专业文档

Obsidian终极PDF导出指南:简单三步打造专业文档 【免费下载链接】obsidian-better-export-pdf Obsidian PDF export enhancement plugin 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-better-export-pdf 还在为Obsidian笔记导出PDF格式混乱而烦恼吗…

作者头像 李华
网站建设 2026/4/19 5:32:07

qmc-decoder终极指南:轻松解密加密音乐,实现跨平台播放

qmc-decoder终极指南:轻松解密加密音乐,实现跨平台播放 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 还在为那些只能在特定音乐平台播放的加密文件…

作者头像 李华
网站建设 2026/4/22 5:41:43

AI诗人诞生记:一小时搭建能朗诵古诗的情感语音系统

AI诗人诞生记:一小时搭建能朗诵古诗的情感语音系统 你有没有想过,让AI用深情的语调朗诵一首《将进酒》,仿佛李白穿越千年亲自吟诵?或者让一段《声声慢》带着淡淡的哀愁,在安静的夜晚缓缓流淌?这不再是科幻…

作者头像 李华
网站建设 2026/4/24 10:16:43

Sketchfab模型下载终极方案:轻松获取任何3D资源

Sketchfab模型下载终极方案:轻松获取任何3D资源 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 还在为无法下载Sketchfab上的精美3D模型而烦恼吗&#…

作者头像 李华
网站建设 2026/4/25 18:51:49

揭秘ViT热力图:如何用云端GPU快速可视化中文物品分类依据

揭秘ViT热力图:如何用云端GPU快速可视化中文物品分类依据 你有没有好奇过,AI模型在“看”一张图片时,到底关注的是哪些部分?比如当你上传一张筷子的照片,ViT(Vision Transformer)模型是靠识别哪…

作者头像 李华