验证二叉搜索树
js
var isValidBST = function(root) {
function inorder(node, min, max) {
// 递归到叶子节点, 没有子节点了 说明满足二叉搜索树条件
if(node === null) return true
// 如果是左子树则看是否比根节点大。如果左子树的val比根的val大,说明不满足条件
// 如果是右子树则看是否比根节点小。如果右子树的val比根的val小,说明不满足条件
if(node.val >= max || node.val <= min) return false
return (
// 先递归左子树, min 不变(比较时用不上),node.val为max,判断是否大于等于根节点。如果左子树的val比根的val大,说明不满足条件
inorder(node.left, min, node.val)
&&
// 再递归右子树, max 不用变了(比较时用不上),node.val为min,判断是否小于等于根节点。如果右子树的val比根的val小,说明不满条件
inorder(node.right, node.val, max)
)
}
return inorder(root, -Infinity, Infinity)
}