查找二叉搜索树中的第 k 小元素

2025年3月17日 | 阅读 8 分钟

二叉搜索树是一种分层数据结构,其中每个节点包含两个子节点,这些子节点反过来满足左子树中每个节点的值都小于父节点,右子树中每个节点的值都大于父节点的属性。由于第k个最小元素指的是一个元素,当以中序遍历模式访问二叉树时,我们必须停止,等待并搜索树中的第k个元素并返回结果。

一些优点是: -

  1. 高效搜索 - 二叉搜索树以其强大的搜索操作而闻名,最小元素也不例外。
  2. 排序顺序 - 第k个最小元素操作以第k个最小排序顺序表示元素,这在寻找以有组织方式呈现的元素时非常有用。

在本文中,我们将看到并找出二叉搜索树中的第k个最小元素。假设我们给定一个二叉树和K作为输入,我们必须找出最小的元素。本文将展示以下问题的代码解决方案。

实施

输出

Find kth Smallest Element in a Binary Search Tree

代码的分步解释

  1. 代码首先包含程序各种输入和输出操作所需的头文件。
  2. 接下来,我们定义一个结构“Node”来表示二叉搜索树中的一个节点,它有以下三个成员:一个数据值和指向左子节点和右子节点的指针。
  3. 然后我们创建一个插入函数,将一个新键插入到BST中。它接受两个参数:一个根值和要插入的值。
  4. “count”变量在任何函数之外声明,并初始化为0。
  5. 现在,我们转向核心部分,创建“KthSmallest”函数,这是一个递归函数,用于查找二叉树中的第K个最小元素,并包含程序的主要逻辑。
  6. 接下来,使用“printKthSmallest”函数打印结果,将k的值作为参数,并显示结果。
  7. main函数是程序的入口点。在其中创建了一个二叉树,并且BST的根被初始化为NULL。
  8. 使用循环,我们可以从键中获取每个值,并使用插入函数将其移动到二叉树。
  9. 调用“printKthSmallest”函数并传入BST的根以显示结果。
  10. 最后,main程序返回0,表示程序成功执行。

示例 2)

输出

Find kth Smallest Element in a Binary Search Tree

代码的分步解释

  1. 代码首先包含程序各种输入和输出操作所需的头文件。
  2. 接下来,我们定义一个结构“Node”来表示二叉搜索树中的一个节点,它有以下三个成员:一个数据值和指向左子节点和右子节点的指针。
  3. 然后我们创建一个插入函数,将一个新键插入到BST中。它接受两个参数:一个根值和要插入的值。
  4. “count”变量在任何函数之外声明,并初始化为0。
  5. 现在,我们转向核心部分,创建“KthSmallest”函数,这是一个递归函数,用于查找二叉树中的第K个最小元素,并包含程序的主要逻辑。
  6. 接下来,使用“printKthSmallest”函数打印结果,将k的值作为参数,并显示结果。
  7. 主函数是程序的入口点。在其中创建了一个二叉树,并且BST的根被初始化为NULL。
  8. 使用循环,我们可以从键中获取每个值,并使用插入函数将其移动到二叉树。
  9. 调用“printKthSmallest”函数并传入BST的根以显示结果。
  10. 最后,main程序返回0,表示程序成功执行。

示例 3)

输出

Find kth Smallest Element in a Binary Search Tree

代码的分步解释

  1. 代码从包含“java.io”包开始。
  2. 接下来,我们定义一个结构“Node”来表示二叉搜索树中的一个节点,它有以下三个成员:一个数据值和指向左子节点和右子节点的指针。
  3. 我们定义了一个名为“TPT”的嵌套类,其中包含程序的逻辑。
  4. 然后我们创建一个插入函数,将一个新键插入到BST中。它接受两个参数:一个根值和要插入的值。
  5. “count”变量在任何函数之外声明,并初始化为0。
  6. 现在,我们转向核心部分,创建“KthSmallest”函数,这是一个递归函数,用于查找二叉树中的第K个最小元素,并包含程序的主要逻辑。
  7. 接下来,使用“printKthSmallest”函数打印结果,将k的值作为参数,并显示结果。
  8. 主函数是程序的入口点。在其中创建了一个二叉树,并且BST的根被初始化为NULL。
  9. 使用循环,我们可以从键中获取每个值,并使用插入函数将其移动到二叉树。
  10. 调用“printKthSmallest”函数并传入BST的根以显示结果。
  11. 最后,main程序返回0,表示程序成功执行。