尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【基础算法精讲 10】如何灵活运用递归?

【基础算法精讲 10】如何灵活运用递归?
📅 发布时间:2026/6/24 8:20:43

100. 相同的树

给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */classSolution{publicbooleanisSameTree(TreeNodep,TreeNodeq){//边界值:当前节点为空时,则返回falseif(p==null||q==null){returnp==q;//都为null,则返回true}//相同的树:当前节点的值相等,且左子树相等,右子树相等。returnp.val==q.val&&isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);}}

101. 对称二叉树

给你一个二叉树的根节点root, 检查它是否轴对称。

思路:在相同的树这段代码上改,判断左子树的左孩子是否等于右子树的右孩子,左子树的右孩子是否等于右子树的左孩子 代码:classSolution{publicbooleanisSameTree(TreeNodep,TreeNodeq){if(p==null||q==null){returnp==q;}returnp.val==q.val&&isSameTree(p.left,q.right)&&isSameTree(p.right,q.left);}publicbooleanisSymmetric(TreeNoderoot){//可以在相同的树代码逻辑上改//看左子树的左孩子是否等于右子树的右孩子,左子树的右孩子是否等于左子树的右孩子returnisSameTree(root.left,root.right);}}

110. 平衡二叉树

给定一个二叉树,判断它是否是平衡二叉树

思路: 用-1表示该树不是平衡二叉树,如果该树中某一个节点不是平衡节点,就立马返回-1,一直返回到调用入口,表示该树为非平衡二叉树。 代码:classSolution{//获得子树高度publicintgetDepth(TreeNodenode){if(node==null){return0;}//获取左子树高度intleft_height=getDepth(node.left);if(left_height==-1){return-1;}//获取右子树高度intright_height=getDepth(node.right);if(right_height==-1||Math.abs(left_height-right_height)>1){return-1;}returnMath.max(left_height,right_height)+1;}publicbooleanisBalanced(TreeNoderoot){//用-1记录该树为非平衡二叉树returngetDepth(root)!=-1;}}

199. 二叉树的右视图

给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例 1:

输入:root = [1,2,3,null,5,null,4]

输出:[1,3,4]

解释:

思路:1、用一个全局数组ans,初始值为空。2、先遍历右子树,比较当前树的深度是否大于数组长度,若大于,则表示该节点是被第一次看见,需要记录到答案数组中。3、必须先遍历右子树,再遍历左子树 代码:classSolution{List<Integer>ans=newArrayList<>();publicvoiddepth(TreeNodenode,intdepth){if(node==null){return;}depth+=1;if(depth>ans.size()){ans.add(node.val);}//必须先遍历右子树depth(node.right,depth);depth(node.left,depth);}publicList<Integer>rightSideView(TreeNoderoot){//先遍历右子树//若答案的长度小于当前树的深度时,证明该节点是第一个能看到的结点,要把该节点记录到答案中。depth(root,0);returnans;}}

相关新闻

  • NoSQL数据库介绍
  • 让 Agent 用自然语言生成 echarts 图表
  • openclaw不存在?Ubuntu 22.04下安全替代方案指南

最新新闻

  • 高校域名邮箱失效?用这4种替代方案成功激活AI学生权益(教育部备案院校专属通道)
  • 免费招聘神器实测|HR实测!零成本高效招人神器
  • 佛山GEO推广哪个公司专业
  • 2026深度实测|两款AI编码工具性能横向对比:NestJS多文件重构Benchmark真实记录
  • 微盟星启分层产品体系:精准匹配不同规模企业GEO布局需求
  • 用 iThinkAir,把 Markdown 教程变成带旁白的视频

日新闻

  • 终极指南:如何用shadPS4在电脑上免费畅玩PS4游戏
  • 打造个性化Instagram Clone:主题定制与用户体验优化技巧
  • 未来展望:RoseTTAFold-All-Atom的发展路线图与社区支持资源汇总

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号