Python 中的二叉搜索树2024年8月29日 | 阅读 10 分钟 二叉树是一种类似于树的数据结构。这种树的每个节点包含两个子节点,称为左子节点和右子节点。二叉搜索树是更常见的二叉树数据结构的一个特例。二叉搜索树应遵循以下属性。
这些树的属性有助于在节点中维护排序,以便像搜索、插入以及查找最大值和最小值等操作可以比在普通二叉树中执行这些操作花费的时间更少。因为那样我们就需要比较每个节点的值才能获得值。 在给定的二叉树中搜索值?让我们以数组为例。如果我们有一个普通数组,并且需要搜索一个元素,我们将需要遍历数组中的元素并比较每个值。而如果我们有一个已排序的数组,我们可以执行二分搜索,它比普通搜索操作更快。类似地,在二叉搜索树和二叉树的情况下。 现在,假设我们需要在二叉搜索树中搜索一个元素。设该元素为 x。
这是二叉搜索树的主要规则。如果值较小,则在左子树中搜索。如果值较大,则在右子树中搜索。该规则类比于数组中的二分搜索。 如果给定的二叉树是平衡的(平衡二叉树是指所有节点的左右子树之间的距离不超过一),我们将从搜索包含 n 个节点的空间开始。由于第一次迭代后我们将丢弃右子树或左子树,我们将丢弃 n/2 个节点。同样,在下一次迭代中,我们将只剩下 n/4 个节点。这样,每次迭代后,搜索空间将减少 2i,其中 i 是迭代次数。 BST 中搜索的说明现在我们将看到一个二叉搜索树工作原理的例子。 考虑下面的树,x 的值为 4。 Tree 步骤:
下面是实现二叉搜索树搜索操作的代码。 代码 输出 The node we are searching for is present in the given BST: 4 时间复杂度: O(h) 是该算法的时间复杂度。这里 h 表示给定二叉搜索树的高度。我们在这里取高度是因为我们正在执行 DFS;因此,在最坏的情况下,我们将遍历到树的叶节点,从而需要 h。 空间复杂度: 空间复杂度为 O(h)。这里 h 表示给定二叉搜索树的高度。空间复杂度为 O(h),因为我们需要存储递归栈的最大空间等于我们遍历的节点数,这等于树的高度。 在 BST 中插入给定值?二叉搜索树中的插入操作类似于搜索操作。插入节点并保持二叉搜索树的属性可以有很多方法。然而,最简单的方法是将节点插入到合适的叶节点。
BST 中插入操作的说明让我们看一个 BST 中插入操作的例子。 考虑下面绘制的 BST。在该树中,我们必须添加值 x = 5。 Tree 步骤:
最终的 BST 将如下所示。 Tree 下面是实现上述插入操作算法的 Python 代码。 代码 输出 The tree before insertion: 0 1 3 4 9 10 The tree after insertion: 0 1 3 4 5 9 10 我们也可以使用迭代方法来解决这个问题。下面是展示如何使用迭代函数在 BST 中插入节点的代码。 代码 输出 The tree before insertion: 0 1 3 4 9 10 The tree after insertion: 0 1 3 4 5 9 10 时间复杂度: O(h) 是迭代方法的时间复杂度。这里 h 表示给定 BST 的高度。时间复杂度为 O(h),因为我们遵循深度优先搜索而不是广度优先搜索(或中序遍历)。 辅助空间: 我们只创建了一个新节点来将其插入树中。由于我们没有使用任何变量,迭代方法的空间复杂度为 O(1)。 下一主题Python 中的类和对象 |
创建自己的 Python 模块似乎有点困难,但如果我们说创建或编写 Python 程序是一个非常简单的任务呢?在本教程中,我们将编写一个 Python 模块,并在编写之后,我们……
阅读 4 分钟
为了生成一个单一、完善的应用程序,混合编程结合了多种编程语言、技术和框架。Python 和 Dart 近年来因其适应性和协同工作能力而广受欢迎。混合编程 集成了多种编程语言、工具和...
阅读 3 分钟
像 Python 这样的语言有丰富的有趣概念,旨在简化程序员的工作。在本教程中,我们将学习 Python 闭包。但在那之前,让我们回顾一下嵌套函数,看看它们如何成为理解的先决条件...
阅读 3 分钟
为了最大化销售和利润,确定商品和服务的最佳销售价格至关重要。本教程适用于希望了解如何利用机器学习来优化零售定价的人员。我们将引导您完成使用Python进行零售成本优化机器学习...
阅读 23 分钟
? 全局解释器锁本教程将重点介绍 Python 的一个重要主题,GIL。我们还将通过代码实现来介绍 GIL 如何影响 Python 程序的性能。在深入探讨这个主题之前,让我们对 GIL 有一个基本的了解。GIL 或全局...
阅读 4 分钟
对数函数是指数函数的逆函数。如果有一个指数方程,例如 2^3 = 8,可以将其改写为对数方程:log2(8) = 3。Python 的 log base 2 函数可以通过内置的 math 模块访问。这个...
阅读 2 分钟
| 自动化测试 人类在多次做同样的工作时会感到厌烦。我们总是在寻找克服它的方法。所以一个解决方案摆在我们面前:我们可以创建一些东西来做这种任务,...
阅读9分钟
介绍 一种用于计算机科学的复杂算法方法,称为所有后缀的 Trie,它允许我们快速在文本中搜索特定的模式。为了实现快速模式匹配,这种方法将 Trie(前缀树)数据结构的思想与后缀相结合。一个...
阅读 4 分钟
NumPy 库用于在 Python 中创建白色空白图像的数字表示,以创建白色图像。此操作通常用作各种图像处理任务的起点,或作为创建图形和插图的画布。NumPy,缩写为...
阅读 3 分钟
在原始 pandas 手册中,空值被描述为缺失值。由于大多数程序员都这样做,我们可以将 pandas 中的空值或缺失数据指定为 NaN。NaN,意思是“非数字”,是表示值缺失的常用方法之一...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India