# LeetCode 951. Flip Equivalent Binary Trees https://leetcode.com/problems/flip-equivalent-binary-trees/description/ ## 題目大意 給定兩棵二元樹,如果經過幾次左右翻轉後兩棵樹一模一樣視作 filp equivalent 回傳是否 filp equivalent ## 思考 下面 code 最後那串 return 大概講解一下 有兩種情況: 1. 兩樹左子樹 filp equivalent 且兩樹右子樹 filp euivalent 2. 兩樹之左子樹分別與對方的右子樹 filp equivalent C++: ```cpp! class Solution { public: bool flipEquiv(TreeNode *root1, TreeNode *root2) { if (!root1 && !root2) return true; if (!(root1 && root2 && 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); } }; ``` Go: ```go! func flipEquiv(root1 *TreeNode, root2 *TreeNode) bool { if root1 == nil && root2 == nil { return true } if root1 == nil || root2 == nil || 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) } ```