1、试写一个判别给定二叉树是否为二叉排序树的代码
时间: 2024-02-17 09:03:43 浏览: 80
写一算法,判断一棵二叉树是否是一棵二叉排序树。
可以使用二叉树的中序遍历来判断给定二叉树是否为二叉排序树,因为对于二叉排序树来说,它的中序遍历是有序的。具体实现如下:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def is_valid_bst(root):
stack = []
prev = float('-inf') # 用来记录上一个节点的值,初始值为负无穷
while root or stack:
while root:
stack.append(root)
root = root.left
root = stack.pop()
if root.val <= prev: # 如果当前节点的值小于等于上一个节点的值,说明不是二叉排序树
return False
prev = root.val
root = root.right
return True
```
该函数的时间复杂度为 O(n),其中 n 表示二叉树的节点数。
阅读全文