【DFS】LeetCode 951. 翻转等价二叉树

题目链接

951. 翻转等价二叉树

思路

如果二叉树 root1root2 根节点值相等,那么只需要检查他们的孩子是不是相等就可以了。

  • 如果 root1 或者 root2null,那么只有在他们都为 null 的情况下这两个二叉树才等价。
  • 如果 root1root2 的值不相等,那这两个二叉树的一定不等价。
  • 如果以上条件都不满足,也就是当 root1root2 的值相等的情况下,需要继续判断 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));
    }
}
posted @   Frodo1124  阅读(37)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示