编写一个算法判定给定的二叉树是二叉排序树
时间: 2024-11-03 15:14:28 浏览: 5
写一算法,判断一棵二叉树是否是一棵二叉排序树。
为了判断一个二叉树是否为二叉排序树(BST),可以采用递归的方法。BST的特点是每个节点的值大于左子树中所有节点的值,小于右子树中所有节点的值。以下是判断过程的伪代码:
1. 如果输入的树为空,那么它是BST(空树满足二叉排序的条件)。
2. 对于非空节点,检查以下条件:
a. 当前节点的值是否大于其左子树中的最大值并且小于其右子树中的最小值。
b. 左子树本身也应该是BST。
c. 右子树本身也应该是BST。
递归地对左右子树应用这个规则,如果所有的节点都满足条件,则整个树就是BST。
以下是一个简单的Python实现示例:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def is_bst(root):
def helper(node, lower = float('-inf'), upper = float('inf')):
if not node:
return True
if node.val <= lower or node.val >= upper:
return False
# Check if the current node is within bounds for its subtree
if not helper(node.right, node.val, upper):
return False
if not helper(node.left, lower, node.val):
return False
return True
return helper(root)
```
阅读全文