判断该二叉树是否为二叉排序树
时间: 2023-06-18 18:08:33 浏览: 87
判断二叉树是不是二叉排序树
5星 · 资源好评率100%
判断一个二叉树是否为二叉排序树(BST)可以通过中序遍历的方式来实现。如果一个二叉树是BST,那么对其进行中序遍历,遍历结果应该是一个递增的有序序列。因此,我们可以先对该二叉树进行中序遍历,然后判断遍历结果是否为递增的有序序列即可。
具体实现方法如下:
1. 对该二叉树进行中序遍历,并将遍历结果存储在一个数组中;
2. 遍历数组,判断每个元素是否比其前一个元素大,如果存在一个元素不满足这个条件,则该二叉树不是BST;
3. 如果遍历完数组后所有元素都满足上述条件,则该二叉树是BST。
以下是代码实现(假设该二叉树的节点值都是整数):
```python
def is_bst(root):
in_order = []
stack = []
curr = root
while curr or stack:
while curr:
stack.append(curr)
curr = curr.left
curr = stack.pop()
in_order.append(curr.val)
curr = curr.right
for i in range(1, len(in_order)):
if in_order[i] <= in_order[i-1]:
return False
return True
```
时间复杂度为O(n),其中n为二叉树节点数。
阅读全文