1var isValidBST = function (root) {2return validate(root, -Infinity, Infinity);3};45var validate = function (node, lower, upper) {6if (node == null) {7// empty node or empty tree8return true;9}1011if (lower < node.val && node.val < upper) {12// check if all tree nodes follow BST rule13return (14validate(node.left, lower, node.val) &&15validate(node.right, node.val, upper)16);17} else {18// early reject when we find violation19return false;20}21};