news 2026/4/17 5:11:19

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

作者头像

张小明

前端开发工程师

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/8 9:51:10

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/17 8:08:02

DDColor最新镜像:免配置体验SOTA上色技术

DDColor最新镜像:免配置体验SOTA上色技术 你是不是也经常遇到这样的情况:手头有一张老照片,想让它“活”过来,变成色彩鲜艳的彩色画面,但又不会用复杂的图像处理软件?或者你是科技媒体记者,需要…

作者头像 李华
网站建设 2026/4/18 3:53:15

抖音内容获取技术全解析:从基础配置到批量下载实战

抖音内容获取技术全解析:从基础配置到批量下载实战 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在当今数字内容时代,抖音平台汇聚了海量的创意视频资源,如何高效获取并…

作者头像 李华
网站建设 2026/4/16 9:08:51

手机号关联QQ号码查询:5分钟快速上手完整指南

手机号关联QQ号码查询:5分钟快速上手完整指南 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾经因为忘记QQ号码而无法登录账号?或者在更换手机后需要确认自己的QQ号码?现在,通…

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

小爱音箱音乐自由:3步打造全屋智能音乐系统

小爱音箱音乐自由:3步打造全屋智能音乐系统 【免费下载链接】xiaomusic 使用小爱同学播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 还在为小爱音箱只能播放有限的官方音乐而烦恼吗?…

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

为什么选Qwen3-14B做RAG?128K上下文实战部署指南

为什么选Qwen3-14B做RAG?128K上下文实战部署指南 1. 背景与技术选型动因 在当前大模型应用快速落地的背景下,检索增强生成(Retrieval-Augmented Generation, RAG)已成为提升模型知识准确性和时效性的主流架构。然而,…

作者头像 李华