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)); }
bool flipEquiv(TreeNode* root1, TreeNode* root2) { if (root1 == nullptr || root2 == nullptr) { return root1 == root2; } if (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)); }
bool flipEquiv(TreeNode* root1, TreeNode* root2) { if( root1 == NULL && root2 != NULL ) return false; if( root2 == NULL && root1 != NULL ) return false; if( root1 == NULL && root2 == NULL ) return true; if( root1 -> val != root2 -> val ) return false; TreeNode* L1 = root1 -> left, *R1 = root1 -> right; TreeNode* L2 = root2 -> left, *R2 = root2 -> right; bool left = flipEquiv(L1, L2) & flipEquiv(R1, R2); bool right = flipEquiv(L1, R2) & flipEquiv(R1, L2); return left | right; }
bool flipEquiv(TreeNode* root1, TreeNode* root2) { if (!same(root1, root2)) return false; if (root1 == nullptr) return true; if (same(root1->left, root2->left) && same(root1->right, root2->right) && flipEquiv(root1->left, root2->left) && flipEquiv(root1->right, root2->right)) return true; if (same(root1->left, root2->right) && same(root1->right, root2->left) && flipEquiv(root1->left, root2->right) && flipEquiv(root1->right, root2->left)) return true; return false; }