判断二叉树是否为二叉排序树算法
时间: 2023-12-13 14:32:32 浏览: 130
判断二叉树是否为二叉排序树的算法如下:
1. 对于空树,返回True。
2. 对于非空树,判断其左子树是否为二叉排序树,右子树是否为二叉排序树。
3. 如果左子树和右子树都是二叉排序树,那么判断左子树的最大值是否小于当前节点的值,右子树的最小值是否大于当前节点的值。
4. 如果左子树和右子树有一个不是二叉排序树,或者左子树的最大值大于等于当前节点的值,或者右子树的最小值小于等于当前节点的值,那么返回False。
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def isValidBST(root: TreeNode) -> bool:
def helper(node, lower=float('-inf'), upper=float('inf')):
if not node:
return True
val = node.val
if val <= lower or val >= upper:
return False
if not helper(node.right, val, upper):
return False
if not helper(node.left, lower, val):
return False
return True
return helper(root)
```
阅读全文