Skip to content

Commit 970f50a

Browse files
committed
Time: 0 ms (100.00%), Space: 41.5 MB (32.68%) - LeetHub
1 parent 5eed345 commit 970f50a

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
14+
* }
15+
*/
16+
class Solution {
17+
public boolean flipEquiv(TreeNode root1, TreeNode root2) {
18+
19+
Queue<TreeNode> queue = new LinkedList<>();
20+
21+
queue.offer(root1);
22+
queue.offer(root2);
23+
while (!queue.isEmpty()) {
24+
TreeNode curr1 = queue.poll();
25+
TreeNode curr2 = queue.poll();
26+
27+
if (curr1 == null && curr2 == null) {
28+
continue;
29+
}
30+
if (!isEquals(curr1, curr2)) {
31+
return false;
32+
}
33+
if (isEquals(curr1.left, curr2.left) && isEquals(curr1.right, curr2.right)) {
34+
queue.offer(curr1.left);
35+
queue.offer(curr2.left);
36+
queue.offer(curr1.right);
37+
queue.offer(curr2.right);
38+
} else if (isEquals(curr1.left, curr2.right) && isEquals(curr1.right, curr2.left)) {
39+
queue.offer(curr1.left);
40+
queue.offer(curr2.right);
41+
queue.offer(curr1.right);
42+
queue.offer(curr2.left);
43+
} else {
44+
return false;
45+
}
46+
}
47+
return true;
48+
}
49+
50+
private boolean isEquals(TreeNode root1, TreeNode root2) {
51+
if (root1 == null && root2 == null) {
52+
return true;
53+
} else if (root1 != null && root2 != null && root1.val == root2.val) {
54+
return true;
55+
} else {
56+
return false;
57+
}
58+
}
59+
}

0 commit comments

Comments
 (0)