[C++] || Recursion
a -> left subtree of root1 == right subtree of root2.\n b -> right subtree of root1 == left subtree of root2.\n\n aa -> left subtree of root1 == left subtree of
* `a` -> `left subtree of root1 == right subtree of root2`.\n* `b` -> `right subtree of root1 == left subtree of root2`.\n\n* `aa` -> `left subtree of root1 == left subtree of root2`.\n* `bb` -> `right subtree of root1 == right subtree of root2`.\n```\nclass Solution {\npublic:\n    //Isommorphic tree \n    bool flipEquiv(TreeNode* root1, TreeNode* root2) {\n        if(!root1 and !root2) return true ;\n        if(!root1 or  !root2) return false ;\n        if(root1->val != root2->val) return false ;\n        \n        //if flipped then  left subtree == right subtree and right subtree == left subtree \n        bool a = flipEquiv(root1->left,root2->right) ;\n        bool b = flipEquiv(root1->right,  root2->left) ;\n        \n        // if not flipped then left subtree == left subtree and right subtree == right subtree\n        bool aa = flipEquiv(root1->left,root2->left) ;\n        bool bb = flipEquiv(root1->right,root2->right) ;\n        \n        return (a and b) || (aa and bb );\n    }\n};\n```
['C']