100. 相同的树
思路:
树用递归就对了。
相同的树定义是结点值相同,树的结构也相同。
有这么几种情况:
1. 结点都为null, 代表都是空结点,没问题。
2. 结点一个是null,一个不是null, 这种情况树的结构肯定是不同的。
3. 结点都为非空结点,这就要求结点值相同,然后递归的去比较左子树和右子树了。
代码:(这个代码看上去比较难懂,其实想一下就明白了,这个是idea优化过后的代码)
1 var isSameTree = function(p, q) { 2 if(p && q){ 3 return p.val === q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right); 4 }else return !(p || q); 5 };
其实我想写的是下面这个,这个比较人类友好:
1 var isSameTree = function(p, q) { 2 if(p && q){ 3 return p.val === q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right); 4 }else if(p || q){ 5 return false; 6 }else{ 7 return true; 8 } 9 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)