2
public boolean isEvenOddTree(TreeNode root) {3
Queue<TreeNode> qu = new LinkedList<>();5
boolean even = true; // maintain check for levels6
while (qu.size() > 0) {9
(even) ? 0 : Integer.MAX_VALUE; // start prev with 0 to check strictly increasing and10
// Integer_MAX_VALUE to check strictly decreasing12
TreeNode rem = qu.remove();16
<= prev) { // false if value at even level is even or not strictly increasing21
|| rem.val >= prev) { // false if value at odd level is odd or not strictly decreasing25
if (rem.left != null) {28
if (rem.right != null) {31
prev = rem.val; // update previous33
even = !even; // change level