判断一棵二叉树是否为二叉排序树 理解体会
时间: 2023-08-20 18:03:57 浏览: 129
二叉排序树(Binary Search Tree,简称 BST)是一种特殊的二叉树,它的左子树的所有节点都小于它的根节点,右子树的所有节点都大于它的根节点。所以判断一棵二叉树是否为二叉排序树,就需要对每个节点进行比较,确保其值符合左小右大的规则。
具体地,可以使用递归的方式来进行判断。对于每个节点,它的左子树和右子树都必须是二叉排序树,并且左子树中的最大节点小于当前节点的值,右子树中的最小节点大于当前节点的值。如果满足这些条件,那么这棵二叉树就是二叉排序树。
实现这个递归的算法,可以参考以下代码:
```python
def is_bst(root):
def helper(node, min_val, max_val):
if not node:
return True
if node.val <= min_val or node.val >= max_val:
return False
return helper(node.left, min_val, node.val) and helper(node.right, node.val, max_val)
return helper(root, float('-inf'), float('inf'))
```
其中,`helper` 函数用来判断以 `node` 为根节点的子树是否为二叉排序树,`min_val` 和 `max_val` 分别是当前子树中所有节点的值应该在的范围。初始时,根节点的值可以是任意值,所以 `min_val` 和 `max_val` 取负无穷和正无穷即可。最后,调用 `helper` 函数来检查整个二叉树是否为二叉排序树。
阅读全文