📅  最后修改于: 2023-12-03 15:39:54.597000             🧑  作者: Mango
本题主要考察编程能力,需要程序员们进行代码编写并给出相应的注释说明。
给定一个整数数组,编写一个函数来判断它是否是一个有效的二叉搜索树(BST)。
如果一个二叉树的左子树只包含小于当前节点的数,右子树只包含大于当前节点的数,任意节点的左右子树也必须是二叉搜索树,则该二叉树被称为有效的二叉搜索树。
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def isValidBST(self, root: TreeNode, lower=float('-inf'), upper=float('inf')) -> bool:
if not root:
return True
if root.val <= lower or root.val >= upper:
return False
return self.isValidBST(root.left, lower, root.val) and self.isValidBST(root.right, root.val, upper)
该题解采用递归算法实现,主要思路为先判断节点是否为空,然后利用数学方法判断左右子树是否为二叉搜索树,其中lower和upper为左右子节点的上下界,若满足二叉搜索树的定义,则返回True,否则返回False。