news 2026/1/27 10:52:04

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

作者头像

张小明

前端开发工程师

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/1/23 5:23:55

YOLOv12操作手册:云端GPU按需使用,灵活付费

YOLOv12操作手册:云端GPU按需使用,灵活付费 你是不是也是一家小型工作室的技术负责人,偶尔需要做目标检测项目,比如识别工地安全帽、车辆分类或者商品盘点?但每次为了跑YOLO模型,都要买昂贵的GPU服务器&am…

作者头像 李华
网站建设 2026/1/25 5:58:50

通义千问2.5量化版体验:老旧电脑福音,1G显存也能流畅跑

通义千问2.5量化版体验:老旧电脑福音,1G显存也能流畅跑 你有没有遇到过这样的情况:想让学生体验最新的AI大模型,比如通义千问2.5这种性能强大的代码生成助手,结果一打开就提示“显存不足”?尤其是在编程培…

作者头像 李华
网站建设 2026/1/24 16:40:46

懒人必备:5步搞定AI视频生成环境搭建

懒人必备:5步搞定AI视频生成环境搭建 你是不是也遇到过这样的情况:市场活动马上要上线,领导急着要宣传视频,可拍摄团队排期满了,剪辑同事又在赶别的项目?别慌,现在用AI生成视频,一个…

作者头像 李华
网站建设 2026/1/26 21:05:48

5个Qwen2.5-7B实战案例:从聊天机器人到代码生成,云端GPU全搞定

5个Qwen2.5-7B实战案例:从聊天机器人到代码生成,云端GPU全搞定 你是不是也遇到过这种情况:刚学会用大模型做聊天机器人,结果想试试写代码又得重新配环境;好不容易调通了图像描述功能,换一个任务又要从头安…

作者头像 李华
网站建设 2026/1/25 23:04:37

AI智能二维码工坊新手指南:3步生成可追踪电子名片

AI智能二维码工坊新手指南:3步生成可追踪电子名片 你是不是也遇到过这样的情况?作为保险代理人,每次见客户都得递好几张纸质名片,结果对方随手一放就丢了。后来改用微信加好友,但很多人现场不扫、回头就忘。更头疼的是…

作者头像 李华
网站建设 2026/1/27 4:16:54

HY-MT1.5-1.8B与Kubernetes集成:弹性伸缩翻译服务

HY-MT1.5-1.8B与Kubernetes集成:弹性伸缩翻译服务 1. 引言:轻量级多语翻译模型的工程化挑战 随着全球化业务的快速扩展,实时、高质量的多语言翻译能力已成为众多企业出海、内容平台和通信应用的核心需求。然而,传统大模型部署成…

作者头像 李华