判定二叉树是否为二叉排序树
时间: 2023-10-19 08:14:52 浏览: 92
判断一棵二叉树是否为二叉排序树,需要满足以下条件:
1. 如果左子树不为空,则左子树上所有节点的值都小于根节点的值;
2. 如果右子树不为空,则右子树上所有节点的值都大于根节点的值;
3. 左右子树本身也分别为二叉排序树。
具体实现可以采用递归的方式,先判断左右子树是否为二叉排序树,再判断当前节点的值是否满足条件。以下是一个示例代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
def helper(node, lower=float('-inf'), upper=float('inf')):
if not node:
return True
if node.val <= lower or node.val >= upper:
return False
if not helper(node.left, lower, node.val):
return False
if not helper(node.right, node.val, upper):
return False
return True
return helper(root)
```
其中,helper函数用来递归实现二叉排序树的判断,lower和upper用来表示当前节点的值应该在哪个区间内。在判断过程中,如果当前节点的值不符合区间要求,则返回False。如果左右子树中有任意一个不是二叉排序树,则返回False。最终,如果所有节点都符合要求,则返回True。
阅读全文