检查一个树是否为二进制搜索树(Binary Search Tree, BST)是计算机科学中的一个常见问题。二进制搜索树是一种特殊的二叉树,其中每个节点的值都大于其左子树中的任何值,并且小于其右子树中的任何值。
在检查树是否为BST时,可能会遇到以下问题:
以下是一个用Python编写的检查BST的函数示例:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def isBST(node, min_val=float('-inf'), max_val=float('inf')):
if not node:
return True
if not min_val < node.val < max_val:
return False
return (isBST(node.left, min_val, node.val) and
isBST(node.right, node.val, max_val))
# 示例使用
root = TreeNode(2, TreeNode(1), TreeNode(3))
print(isBST(root)) # 应该输出 True
min_val
和max_val
参数用于确保节点值在允许的范围内。通过这种方式,可以有效地检查一个树是否为二进制搜索树,并且能够处理大多数常见的问题。
领取专属 10元无门槛券
手把手带您无忧上云