使用 Python 从二叉搜索树的前序遍历中获取叶节点17 Mar 2025 | 4 分钟阅读 什么是二叉搜索树?二叉树是一种二元数据结构,包含不同的节点,其中每个节点最多有两个子节点。这些节点遵循一些属性,包括
我们可以通过不同的方式遍历二叉搜索树:
中序遍历算法
前序遍历算法
后序遍历算法
问题陈述我们有一个二叉搜索树的前序遍历。我们需要从给定的二叉搜索树前序遍历中打印叶子节点。二叉搜索树可以有任意数量的叶子节点。 假设所有节点值都是正数,并且已经按前序排列。我们需要从树中打印叶子节点。 让我们通过几个例子来理解这个问题。 示例 1 输入 输出 70 149 388 说明 给定的二叉搜索树是 ![]() 第一个元素将是根节点,因为在前序遍历中,我们首先遍历根节点,然后是左子树,最后是右子树。大于根节点的元素是左子树中的元素,其余的在右子树中。使用此输入构建二叉搜索树后,我们得到叶子节点元素为 [70, 149, 388]。 示例 2 输入 { 42, 30, 27, 23, 19, 22, 26, 29, 15, 32, 31, 35, 38 } 输出 15 22 26 29 31 38 说明 第一个元素将是根节点,因为在前序遍历中,我们首先遍历根节点,然后是左子树,最后是右子树。使用此输入构建二叉搜索树后,我们得到叶子节点为元素 [15, 22, 26, 29, 31, 38]。 有两种方法可以从二叉搜索树的前序遍历中找到叶子节点。 1. 简单方法在这个方法中,我们将首先使用中序和前序数组来找出二叉搜索树的前序遍历。我们首先遍历前序数组,然后在中序数组中找到元素。 代码 输出 The Leaf Nodes present in the binary search tree are: 15 22 26 29 31 38 说明 首先,我们将遍历数组以在中序数组中找到元素。我们使用了二分查找,因为它会以升序给出遍历结果。我们已经为查找元素设置了范围 [L, R]。如果 L 的值等于 R,我们就找到了叶子节点。现在,我们将从前序数组的根节点的L = 0 和 R = 节点数 - 1 开始。要搜索左子树的元素,我们将L = 0 和 R = 根节点索引。对于右子树,我们设置 L = 根节点索引 + 1 和 R = 节点数 - 1。 2. 使用栈我们将使用一个栈并通过两个指针遍历数组。 代码 输出 The Leaf Nodes present in the binary search tree are: 54 78 44 说明 在这个方法中,我们使用了两个指针,i 和 j。开始时,i = 0 且 j = 1。比较 array[i] 和 array[j],如果 array[i] > array[j],这意味着 array[j] 在 a[i] 的左侧。然后,a[i] 将被压入栈。我们将弹出元素直到 array[i] > 栈顶元素,然后打印第 j 个值。第 j 个值将是二叉搜索树的叶子节点。 |
简介:在本教程中,我们学习强密码建议器 Python 程序。构建强大的安全性需要一个强密码。保护每台设备、社交媒体账户、银行账户、ATM、重要文件等都变得很重要。我们使用密码来锁定...
7 分钟阅读
在本教程中,我们将学习如何以高级方式使用 Python 解决常见的编码问题。我们将遵循两种方法 - 基本方法和高级方法。这里介绍的所有编码问题都基于 Advent of Code 挑战...
5 分钟阅读
在下文中,我们将讨论 Kadane 算法及其解决问题的特性,以解决“最大子数组和”问题。我们将理解该算法的概念,并使用 Python 代码及其示例和相应的输出来实现它...
5 分钟阅读
简介 在本教程中,我们将讨论采购管理。采购管理是一种战略技术,用于在您确定的预算内,在截止日期或之前从所需的公司获取物品或服务。您的目标是平衡供需以确保最小库存水平...
阅读 3 分钟
当我们处理 Python 字典时,我们可能会遇到需要从字典中获取选择性键值总和的问题。这个问题可能发生在 Web 开发领域,让我们看看以下解决问题的方法。方法……
阅读 3 分钟
如何在Python中从列表中删除元素 我们可以使用Python List数据结构将几种数据类型的项目存储在有序序列中。方括号([])用于封装数据,而逗号用于分隔条目(,)。Python提供了...
7 分钟阅读
在数据可视化中,绘图是视觉化表示数据的最有效方法。如果绘制得不够详细,它可能会显得复杂。Python 有 Matplotlib,用于以绘图形式表示数据。用户应该优化...
阅读 3 分钟
在本教程中,我们将编写 Python 程序来查找对给定列表进行排序所需的最少交换次数。我们有一个包含 n 个不同元素的数组,我们需要找到对数组进行排序所需的最少交换次数...
5 分钟阅读
? 让我们看看如何修改 Pandas DataFrame 的列标题。在本教程中,我们将介绍六种不同的方法来更改 pandas DataFrame 中的列名。记录保存在 Pandas DataFrame(一个矩形矩阵)中。DataFrame 使可视化和...
5 分钟阅读
数据结构和算法或 DSA 是编程中每个程序员都必须熟练掌握的概念,以便通过高效地充分利用可用资源来创建代码。无论使用何种编程语言,DSA 更多的是一个通用概念。这...
14 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India