https://leetcode.com/problems/flip-equivalent-binary-trees/description/
給定兩棵二元樹,如果經過幾次左右翻轉後兩棵樹一模一樣視作 filp equivalent
回傳是否 filp equivalent
下面 code 最後那串 return 大概講解一下
有兩種情況:
C++:
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:
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)
}
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up