📌  相关文章
📜  教资会网络 | UGC NET CS 2015 年 6 月 – III |问题 74(1)

📅  最后修改于: 2023-12-03 15:39:54.597000             🧑  作者: Mango

UGC NET CS 2015年6月-III | 问题74

本题主要考察编程能力,需要程序员们进行代码编写并给出相应的注释说明。

题目描述

给定一个整数数组,编写一个函数来判断它是否是一个有效的二叉搜索树(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。