Medium
Given the root
of a binary tree, determine if it is a valid binary search tree (BST).
A valid BST is defined as follows:
Example 1:
Input: root = [2,1,3]
Output: true
Example 2:
Input: root = [5,1,4,null,null,3,6]
Output: false
Explanation: The root node’s value is 5 but its right child’s value is 4.
Constraints:
[1, 104]
.-231 <= Node.val <= 231 - 1
require_relative '../../com_github_leetcode/tree_node'
# @param {String} string
# @return {String}
def is_valid_bst(root)
solve_bst(root, -Float::INFINITY, Float::INFINITY)
end
# We'll pass a valid range and check if the root lies within it,
# updating the range for the subtrees
def solve_bst(root, left, right)
return true if root.nil?
if root.val <= left || root.val >= right
return false
end
solve_bst(root.left, left, root.val) && solve_bst(root.right, root.val, right)
end