3 && true возвращает ноль. Почему?!!!
Посмотрите на пример ниже. Важно проверить перед оператором сравнения в JavaScript.
В этом примере проверяется, действительно ли двоичное дерево, путем итерации с использованием структуры данных стека.
До:
// iterative var isValidBST = function(root) { if(!root) { return true } let stack = [{node: root, lower: null, upper: null}] while(stack.length !== 0) { const { node, lower, upper } = stack.pop() if(!node) { continue } if((lower && node.val <= lower) || (upper && node.val >= upper)) { return false } stack.push({node: node.left, lower, upper: node.val }) stack.push({node: node.right, lower: node.val, upper}) } return true };
После:
var isValidBST = function(root) { if(!root) { return true } let stack = [{val: root.val, left: root.left, right: root.right, lower: null, upper: null}] while(stack.length !== 0) { let current = stack.pop() if(current.val <= current.lower || current.val >= current.upper) { return false } console.log({val: current.left.val, left: current.left, right: current.right, lower: current.lower, upper: current.val}) stack.push({val: current.left.val, left: current.left, right: current.right, lower: current.lower, upper: current.val}) stack.push({val: current.right.val, left: current.left, right: current.right, lower: current.val, upper: current.upper}) console.log(stack) } return true };
Точка
number && Boolean возвращает ноль!
i.e) 4 && ture =› null
Ваше здоровье