951. 翻转等价二叉树

Posted Debroon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了951. 翻转等价二叉树相关的知识,希望对你有一定的参考价值。

951. 翻转等价二叉树

 


题目

传送门:https://leetcode.cn/problems/flip-equivalent-binary-trees/


 


算法设计:深度优先搜索

二叉树原问题 = 根节点 + 左右子树问题

俩棵二叉树是否相同 = 俩棵树的根节点相同 && (俩个根节点的左右子树是否相同 || 翻转后, 俩个根节点的左右子树是否相同)。

对子树把翻转和不翻转两种情况全都穷举一遍,只要有一种情况能够匹配,就说明整棵树是翻转相同的。

class Solution 
public:
    bool flipEquiv(TreeNode* r1, TreeNode* r2) 
        if (r1 == NULL || r2 == NULL) return r1 == r2;     // 俩个节点都为空,则true;只有一个空,则false
        return r1->val == r2->val &&                       // 节点不同则 false
               (flipEquiv(r1->left, r2->left) && flipEquiv(r1->right, r2->right) ||    // 俩个根节点的左右子树是否相同
               flipEquiv(r1->left, r2->right) && flipEquiv(r1->right, r2->left));      // 翻转后,俩个根节点的左右子树是否相同
    
;

以上是关于951. 翻转等价二叉树的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode951-翻转等价二叉树

LeetCode 951 翻转等价二叉树

算法 翻转二叉树 dfs

算法:二叉树翻转

数据结构与算法—翻转二叉树

java数据结构与算法之翻转二叉树