package com.fishercoder.solutions;

import com.fishercoder.common.classes.TreeNode;

/**
 * 951. Flip Equivalent Binary Trees
 *
 * For a binary tree T, we can define a flip operation as follows: choose any node, and swap the left and right child subtrees.
 *
 * A binary tree X is flip equivalent to a binary tree Y if and only if we can make X equal to Y after some number of flip operations.
 *
 * Write a function that determines whether two binary trees are flip equivalent.  The trees are given by root nodes root1 and root2.
 *
 * Note:
 *  * Each tree will have at most 100 nodes.
 *  * Each value in each tree will be a unique integer in the range [0, 99].
 */

public class _951 {
    public static class Solution1 {
        public boolean flipEquiv(TreeNode root1, TreeNode root2) {
            if (root1 == null && root2 == null) return true;
            if (root1 == null || root2 == null) return false;

            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))
            );
        }
    }
}

@@ -826,32 +826,50 @@
 & root2 == null)
+ %7B%0A               
  return true;%0A  
@@ -866,16 +866,30 @@
 n true;%0A
+            %7D%0A
         
@@ -932,76 +932,140 @@
 ll) 
-return false;%0A%0A            if (root1.val != root2.val) return false;
+%7B%0A                return false;%0A            %7D%0A%0A            if (root1.val != root2.val) %7B%0A                return false;%0A            %7D
 %0A%0A  
@@ -1173,19 +1173,16 @@
 .right))
- %7C%7C
 %0A       
@@ -1181,32 +1181,35 @@
 %0A               
+ %7C%7C
  (flipEquiv(root

fix build