【发布时间】:2021-12-15 20:16:00
【问题描述】:
我正在尝试验证二叉搜索树。给定二叉树的根,判断它是否是有效的二叉搜索树(BST)。
一个有效的 BST 定义如下:
节点的左子树只包含键小于节点键的节点。 节点的右子树只包含键大于节点键的节点。 左右子树也必须是二叉搜索树。
https://leetcode.com/problems/validate-binary-search-tree/
我正在使用递归解决方案,但未能通过此测试用例:
输入:[2,1,3]
预期输出:真
我的输出:假
示例输入示例:[5,1,4,null,null,3,6]
预期输出:假
我的输出:假
谁能指出我的错误?以下是我的代码:
# Definition for a binary tree node.
# 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: Optional[TreeNode]) -> bool:
def valid(node, left, right):
if not node:
return True
if not (node.val>left and node.val<right):
return False
return (valid(node.left, left, node.val) and valid(node.right, node.val, right))
return valid(root, float("-inf"), float("-inf"))
【问题讨论】:
-
你能更好地解释一下测试用例吗?
-
请检查。我已经编辑了问题并添加了一些示例输入和输出
标签: python data-structures tree