98. Validate Binary Search Tree
https://leetcode.com/problems/validate-binary-search-tree/
js
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isValidBST = function(root) {
return isValid(root, -Infinity, Infinity)
}
function isValid(root, min, max) {
if (!root) {
return true
}
if (root.val <= min || root.val >= max) {
return false
}
return isValid(root.left, min, root.val) && isValid(root.right, root.val, max)
}
py
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def isValidBST(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
return self.isValid(root, -float('inf'), float('inf'))
def isValid(self, root, low, high):
if not root:
return True
if root.val <= low or root.val >= high:
return False
return self.isValid(root.left, low, root.val) and self.isValid(root.right, root.val, high)
go
import "math"
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func isValidBST(root *TreeNode) bool {
return isValid(root, math.MinInt64, math.MaxInt64)
}
func isValid(root *TreeNode, min int, max int) bool {
if root == nil {
return true
}
if root.Val <= min || root.Val >= max {
return false
}
return isValid(root.Left, min, root.Val) && isValid(root.Right, root.Val, max)
}