判断一棵二叉树是否为折半查找判定树
时间: 2023-08-19 20:05:41 浏览: 181
一个二叉树是折半查找判定树,当且仅当其满足以下条件:
1. 左子树和右子树都是折半查找判定树。
2. 左子树中所有节点的值均小于根节点的值。
3. 右子树中所有节点的值均大于根节点的值。
因此,可以使用递归的方法判断一棵二叉树是否为折半查找判定树。具体实现可以参考以下代码:
```python
def is_bst(root):
if not root:
return True
if not root.left and not root.right:
return True
if root.left and root.right:
if root.left.val < root.val < root.right.val:
return is_bst(root.left) and is_bst(root.right)
elif root.left:
if root.left.val < root.val:
return is_bst(root.left)
else:
if root.right.val > root.val:
return is_bst(root.right)
return False
```
在该代码中,我们首先判断当前节点是否为空或者为叶子节点,如果是则返回 True。然后,我们判断当前节点的左右子树是否都存在,如果存在,则判断左子树的所有节点的值是否小于根节点的值,右子树的所有节点的值是否大于根节点的值,如果满足条件,则递归判断左右子树是否都是折半查找判定树。如果只存在左子树或者右子树,则分别判断左子树或者右子树是否满足条件即可。
阅读全文