给定二叉树判断是否为二叉排序树代码
时间: 2023-08-28 12:03:37 浏览: 118
写一算法,判断一棵二叉树是否是一棵二叉排序树。
以下是判断二叉树是否为二叉排序树(BST)的代码,其中假设二叉树中不包含重复的节点值:
```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 dfs(node, lower=float('-inf'), upper=float('inf')):
if not node:
return True
if node.val <= lower or node.val >= upper:
return False
return dfs(node.left, lower, node.val) and dfs(node.right, node.val, upper)
return dfs(root)
```
该算法使用深度优先搜索(DFS)遍历二叉树,同时维护每个节点的上下界,判断每个节点是否在其对应的上下界范围内。如果二叉树中的所有节点都满足该条件,则该二叉树为二叉排序树。
注意,该算法的时间复杂度为O(n),其中n为二叉树中的节点数。
阅读全文