【基础算法精讲 10】如何灵活运用递归?
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(pnull||qnull){returnpq;//都为null则返回true}//相同的树当前节点的值相等且左子树相等右子树相等。returnp.valq.valisSameTree(p.left,q.left)isSameTree(p.right,q.right);}}101. 对称二叉树给你一个二叉树的根节点root 检查它是否轴对称。思路在相同的树这段代码上改判断左子树的左孩子是否等于右子树的右孩子左子树的右孩子是否等于右子树的左孩子 代码classSolution{publicbooleanisSameTree(TreeNodep,TreeNodeq){if(pnull||qnull){returnpq;}returnp.valq.valisSameTree(p.left,q.right)isSameTree(p.right,q.left);}publicbooleanisSymmetric(TreeNoderoot){//可以在相同的树代码逻辑上改//看左子树的左孩子是否等于右子树的右孩子左子树的右孩子是否等于左子树的右孩子returnisSameTree(root.left,root.right);}}110. 平衡二叉树给定一个二叉树判断它是否是平衡二叉树思路 用-1表示该树不是平衡二叉树如果该树中某一个节点不是平衡节点就立马返回-1一直返回到调用入口表示该树为非平衡二叉树。 代码classSolution{//获得子树高度publicintgetDepth(TreeNodenode){if(nodenull){return0;}//获取左子树高度intleft_heightgetDepth(node.left);if(left_height-1){return-1;}//获取右子树高度intright_heightgetDepth(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{ListIntegeransnewArrayList();publicvoiddepth(TreeNodenode,intdepth){if(nodenull){return;}depth1;if(depthans.size()){ans.add(node.val);}//必须先遍历右子树depth(node.right,depth);depth(node.left,depth);}publicListIntegerrightSideView(TreeNoderoot){//先遍历右子树//若答案的长度小于当前树的深度时证明该节点是第一个能看到的结点要把该节点记录到答案中。depth(root,0);returnans;}}

相关新闻

烤糊的饼干

烤糊的饼干

🍪 烤糊的孪生饼干1. 为什么叫“孪生饼干”?在数论里,孪生质数指相差为 2 的质数对(如 3 和 5, 11 和 13)。但这里的厨师更懒,他选的 p1013 和 q1019 相差只有 6。在 RSA 里,如果 p …

2026/6/24 8:13:14阅读更多 →
手机投屏电视实用指南:4种通用方法+3款工具实测,网课追剧不再费眼

手机投屏电视实用指南:4种通用方法+3款工具实测,网课追剧不再费眼

手机上看网课、追剧、看教学视频,屏幕小不说,时间长了眼睛也累。把画面投到电视大屏上,观感会好很多,孩子上网课也不用凑在手机前面了。不过投屏这件事,实操起来问题不少:搜不到电视、投上去卡顿、某些视频…

2026/6/24 8:13:14阅读更多 →
VB6.0下载安装教程(附安装包)2026最新版(Visual Basic 6.0中文企业版)

VB6.0下载安装教程(附安装包)2026最新版(Visual Basic 6.0中文企业版)

文章目录前言VB6.0 安装前准备VB6.0 安装教程VB6.0初学者入门:认识VB开发环境和基本语法结构前言 整理了一份 VB6.0安装教程,专门针对 Win10/Win11 系统下安装失败的情况。很多朋友反映新系统上装 VB6.0 会报错,按下面的步骤一步步来&#x…

2026/6/24 8:13:14阅读更多 →
MPC862程序流追踪与硬件调试:从原理到实战解决嵌入式通信系统难题

MPC862程序流追踪与硬件调试:从原理到实战解决嵌入式通信系统难题

1. MPC862程序流追踪:从硬件原理到实战调试在嵌入式通信系统的开发里,最让人头疼的莫过于程序“跑飞”了。你看着板子上的指示灯乱闪,串口输出一堆乱码,但就是不知道CPU到底执行了哪条指令、在哪个分支上出了问题。尤其是在像MPC8…

2026/6/24 23:23:10阅读更多 →
基于Tor Hidden Service的匿名通信系统Ricochet架构深度解析

基于Tor Hidden Service的匿名通信系统Ricochet架构深度解析

1. 项目概述:为什么我们需要一个“终极”匿名通信方案?在数字世界里,隐私和匿名性正变得越来越奢侈。我们每天使用的即时通讯工具,无论是微信、Telegram还是Signal,都在不同程度上依赖于中心化的服务器。这意味着&…

2026/6/24 23:23:10阅读更多 →
多重冒号(::)在编程中的核心作用:从命名空间到代码组织

多重冒号(::)在编程中的核心作用:从命名空间到代码组织

1. 项目概述:从“多重冒号”到代码的优雅表达最近在代码审查和开源项目里,我时不时会看到一个叫“Multiple-Colon”的讨论点。乍一看这个标题,你可能会有点懵:冒号不就是个标点吗,还能玩出什么花样?但如果你…

2026/6/24 23:23:10阅读更多 →
LINPACK基准测试:从原理到实战,全面解析HPC性能评估金标准

LINPACK基准测试:从原理到实战,全面解析HPC性能评估金标准

1. 项目概述:从“超级计算机的标尺”到“无处不在的性能度量”如果你在服务器、高性能计算(HPC)甚至个人电脑的评测里,看到过“双精度浮点性能达到XX TFlops”这样的描述,那背后十有八九站着LINPACK的身影。LINPACK Be…

2026/6/24 23:23:10阅读更多 →
OpenClaw:面向业务流程的智能体操作系统架构解析

OpenClaw:面向业务流程的智能体操作系统架构解析

1. OpenClaw 不是“另一个 Agent 框架”,而是面向真实业务流的智能体操作系统 你点开 GitHub 上 OpenClaw 的 README,第一眼看到的不是“支持多模型”“内置 20 Skill”,而是一张带虚线边框的三层架构图:最上层写着 Business Fl…

2026/6/24 23:23:10阅读更多 →
Claude Code Auto Mode:CLI驱动的VS Code智能协同范式

Claude Code Auto Mode:CLI驱动的VS Code智能协同范式

1. Auto Mode不是“全自动”,而是Claude Code里最被误解的交互范式很多人第一次看到“Claude Code Auto Mode”这个名称,下意识就联想到“代码全自动生成”“不用敲一个字就能跑通项目”——我刚接触时也这么想。结果在VS Code里点开Auto Mode&#xff0…

2026/6/24 23:18:07阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/25 9:39:54阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/25 2:52:24阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/25 9:01:34阅读更多 →