【LeetCode OJ】Same Tree
题目:Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
解题思路:这题的基本意思就是要判断两个二叉树是否相同,因为递归思想不是很熟练,所以一开始用非递归的方法写的,但是老有一个case过不了。后来硬着头皮用递归的思路想了一下,总算是通过了所有的测试用例。以前每次遇到递归的问题都会有点抗拒,担心会出点bug,平时也练习的很少,下面还是简单总结一下递归的思想:
程序自身调用自身的编程技巧称为递归,递归有四个特性:
1.必须有可最终达到的终止条件,否则程序将陷入无穷循环;
2.子问题在规模上比原问题小,或更接近终止条件;
3.子问题可通过再次递归调用求解或因满足终止条件而直接求解;
4.子问题的解应能组合为整个问题的解。
上面的这道题就是典型的递归问题,首先判断两个二叉树根节点是否相同,再判断其左右孩子节点是否相同。代码如下:
/* 判断两个二叉树是否相同 */ class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class Solution { public boolean isSameNode(TreeNode a,TreeNode b) //判断两个节点是否相同 { if(a==null&&b==null) //均为空节点,相同 return true; else if(a!=null&&b!=null&&a.val==b.val)//均不为空节点且节点值相等,相同 return true; else //其余情况均为不相同 return false; } public boolean isSameTree(TreeNode p, TreeNode q) { if(p==null&&q==null) return true; if(!isSameNode(p, q)) return false; if(isSameNode(p, q)) return isSameTree(p.left, q.left)&&isSameTree(p.right, q.right); return false; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗