Even Odd Tree
MediumTreeBreadth-First SearchBinary Tree
Solution
import { TreeNode } from '@algorithm/lib';
export function isEvenOddTree(root: TreeNode | null): boolean {
if (!root) {
return true;
}
let nodes = [root];
let level = 0;
while (0 < nodes.length) {
const nextNodes: TreeNode[] = [];
let prevValue = Number.MIN_SAFE_INTEGER;
for (const node of nodes) {
const currentValue = level % 2 === 0 ? node.val : -node.val;
if (level % 2 === node.val % 2 || prevValue >= currentValue) {
return false;
}
prevValue = currentValue;
node.left && nextNodes.push(node.left);
node.right && nextNodes.push(node.right);
}
nodes = nextNodes;
level += 1;
}
return true;
}