news 2026/5/11 5:00:16

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

作者头像

张小明

前端开发工程师

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/5/2 5:17:15

经济研究LaTeX模板:从格式困扰到高效写作的完美蜕变

经济研究LaTeX模板:从格式困扰到高效写作的完美蜕变 【免费下载链接】Chinese-ERJ 《经济研究》杂志 LaTeX 论文模板 - LaTeX Template for Economic Research Journal 项目地址: https://gitcode.com/gh_mirrors/ch/Chinese-ERJ 作为一名经济学研究者&#…

作者头像 李华
网站建设 2026/5/8 4:13:55

终极解决方案:WinBtrfs v1.9实战升级全攻略

终极解决方案:WinBtrfs v1.9实战升级全攻略 【免费下载链接】btrfs WinBtrfs - an open-source btrfs driver for Windows 项目地址: https://gitcode.com/gh_mirrors/bt/btrfs 还在为Windows上的Btrfs文件系统性能问题而困扰?每次读写操作都伴随…

作者头像 李华
网站建设 2026/5/1 8:27:49

AssetRipper终极指南:快速掌握Unity资源提取完整流程

AssetRipper终极指南:快速掌握Unity资源提取完整流程 【免费下载链接】AssetRipper GUI Application to work with engine assets, asset bundles, and serialized files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper 还在为Unity游戏中的…

作者头像 李华
网站建设 2026/5/6 11:10:26

Qwen-Image-Edit商业设计案例:广告公司用云端方案,客户提案快人一步

Qwen-Image-Edit商业设计案例:广告公司用云端方案,客户提案快人一步 在广告行业,时间就是创意的生命线。4A公司的设计师们常常面临这样的窘境:客户临时提出修改意见,比如“把产品换个颜色”“加个标语”“背景换成城市…

作者头像 李华
网站建设 2026/5/11 9:58:58

AI读脸术部署教程:3步完成人脸属性分析环境搭建

AI读脸术部署教程:3步完成人脸属性分析环境搭建 1. 引言 1.1 学习目标 本文将带你从零开始,快速部署一个基于 OpenCV DNN 的轻量级人脸属性分析系统。通过本教程,你将掌握如何在无需深度学习框架(如 PyTorch 或 TensorFlow&…

作者头像 李华