当前位置:实例文章 » 其他实例» [文章]【代码随想录day20】验证二叉搜索树

【代码随想录day20】验证二叉搜索树

发布人:shili8 发布时间:2025-03-15 02:52 阅读次数:0

**代码随想录 Day20: 验证二叉搜索树**

在前面的文章中,我们讨论了二叉搜索树(Binary Search Tree)的基本概念。今天,我们将重点讨论如何验证一个给定的二叉树是否是二叉搜索树。

## 一、什么是二叉搜索树二叉搜索树是一种特殊的二叉树,每个结点最多有两个子结点(左孩子和右孩子),且每个结点的值都满足以下条件:

* 左子树中的所有值都小于该结点的值。
* 右子树中的所有值都大于该结点的值。

## 二、如何验证二叉搜索树要验证一个给定的二叉树是否是二叉搜索树,我们可以使用中序遍历(Inorder Traversal)来检查每个结点的值是否满足上述条件。具体步骤如下:

1. 首先,中序遍历二叉树,得到一个有序数组。
2. 然后,对于这个有序数组中的每个元素,我们检查它是否满足以下条件:
* 如果当前元素是左子树中的最大值,则该元素的右孩子应该为 NULL。
* 如果当前元素是右子树中的最小值,则该元素的左孩子应该为 NULL。

## 三、代码示例下面是一个 Python代码示例,用于验证二叉搜索树:

class TreeNode:
 def __init__(self, x):
 self.val = x self.left = None self.right = Nonedef isValidBST(root):
 """
 验证给定的二叉树是否是二叉搜索树。
 Args:
 root: 二叉树的根结点。
 Returns:
 True 如果二叉树是二叉搜索树,False 否则。
 """
 def inorder(root):
 # 中序遍历二叉树 if not root:
 return []
 return inorder(root.left) + [root.val] + inorder(root.right)
 values = inorder(root)
 for i in range(len(values)):
 # 检查每个结点的值是否满足条件 if i >0 and values[i-1] >= values[i]:
 return False return True# 测试用例root = TreeNode(2)
root.left = TreeNode(1)
root.right = TreeNode(3)

print(isValidBST(root)) # Output: Trueroot = TreeNode(5)
root.left = TreeNode(1)
root.right = TreeNode(7)
root.left.right = TreeNode(6)
root.right.left = TreeNode(4)

print(isValidBST(root)) # Output: False


## 四、总结在本文中,我们讨论了如何验证一个给定的二叉树是否是二叉搜索树。我们使用中序遍历来检查每个结点的值是否满足条件,并提供了 Python代码示例。

相关标签:python开发语言
其他信息

其他资源

Top