Even Odd Tree LeetCode solution in Java

1
class Solution {
2
public boolean isEvenOddTree(TreeNode root) {
3
Queue<TreeNode> qu = new LinkedList<>();
4
qu.add(root);
5
boolean even = true; // maintain check for levels
6
while (qu.size() > 0) {
7
int size = qu.size();
8
int prev =
9
(even) ? 0 : Integer.MAX_VALUE; // start prev with 0 to check strictly increasing and
10
// Integer_MAX_VALUE to check strictly decreasing
11
while (size-- > 0) {
12
TreeNode rem = qu.remove();
13
if (even) {
14
if (rem.val % 2 == 0
15
|| rem.val
16
<= prev) { // false if value at even level is even or not strictly increasing
17
return false;
18
}
19
} else {
20
if (rem.val % 2 != 0
21
|| rem.val >= prev) { // false if value at odd level is odd or not strictly decreasing
22
return false;
23
}
24
}
25
if (rem.left != null) {
26
qu.add(rem.left);
27
}
28
if (rem.right != null) {
29
qu.add(rem.right);
30
}
31
prev = rem.val; // update previous
32
}
33
even = !even; // change level
34
}
35
return true;
36
}
37
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0