【DFS】LeetCode 951. 翻转等价二叉树
题目链接
思路
如果二叉树 root1
,root2
根节点值相等,那么只需要检查他们的孩子是不是相等就可以了。
- 如果
root1
或者root2
是null
,那么只有在他们都为null
的情况下这两个二叉树才等价。 - 如果
root1
,root2
的值不相等,那这两个二叉树的一定不等价。 - 如果以上条件都不满足,也就是当
root1
和root2
的值相等的情况下,需要继续判断root1
的孩子节点是不是跟root2
的孩子节点相当。因为可以做翻转操作,所以这里有两种情况需要去判断。
代码
class Solution {
public boolean flipEquiv(TreeNode root1, TreeNode root2) {
if(root1 == root2){
return true;
}
if(root1 == null || root2 == null || root1.val != root2.val){
return false;
}
return (flipEquiv(root1.left, root2.left) && flipEquiv(root1.right, root2.right) ||
flipEquiv(root1.left, root2.right) && flipEquiv(root1.right, root2.left));
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」