【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 @ 2023-01-20 15:05  Frodo1124  阅读(25)  评论(0编辑  收藏  举报