BST 中的第二个最大值

2023-12-21

这是一道面试题。找到 BST 中的第二个最大值。

最大元素是 BST 中最右边的叶子。第二个最大值是其父级或其左子级。所以解决方案是遍历 BST 找到最右边的叶子并检查其父节点和左子节点。

是否有意义?


不,那是错误的。考虑这个 BST:

        137
       /
      42
       \
        99

这里,第二个最大值是最大值的左子节点的最右子节点。您的算法需要更新,以便您检查最大值的父级,或最大值左子级的最右子级。

另请注意,最大值不一定是最右边的leaf节点,它是树右脊柱底部的节点。上面,137不是叶子。

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BST 中的第二个最大值 的相关文章

  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 用于开始和/或包含搜索的最快字符串集合结构/算法是什么

    我有以下情况 我有一个大的字符串集合 比如说 250 000 平均长度可能是 30 我要做的就是在这些搜索中进行许多搜索 大多数搜索都是 StartsWith 和 Contains 类型的 该集合在运行时是静态的 这意味着选择的集合的初始读
  • 哪些不同的术语表示相同的事物(或不同的术语,但人们认为它们表示相同的意思)? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 什么是拉姆达?

    有人可以很好地描述什么是 Lambda 吗 我们为它们设置了一个标签 它们涉及 C 问题的秘密 但我还没有找到一个很好的定义和解释来解释它们是什么 闭包 lambda 和匿名函数不一定是同一件事 匿名函数是任何没有 或者至少不需要 自己名称
  • 平铺单纯形噪声?

    我 作为业余爱好者 对伪随机噪声生成很感兴趣 特别是 Perlin 和 Simplex 算法 Simplex 的优点是速度 尤其是在更高的维度上 但 Perlin 可以相对容易地平铺 我想知道是否有人知道平铺单纯形算法 固定维度就好 泛型更
  • O(1) 算法确定节点是否是多路树中另一个节点的后代?

    想象一下下面的树 A B C D E F 我正在寻找一种方法来查询 F 是否是 A 的后代 注意 F 不需要是directA 的后代 在这种特殊情况下这是正确的 只需要针对更大的潜在后代节点池测试有限数量的潜在父节点 当测试一个节点是否是潜
  • 如何计算数据框中按另一列的列值分组的一列的连续字符串值?

    我有以下数据框 Levels Labels Confidence 0 Hands 0 8 0 Leg 0 7 0 Eye 0 9 1 Ear 0 9 1 Eye 0 8 2 Hands 0 9 2 Eye 0 8 3 Eye 0 8 我想检
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 我正在尝试寻找“调酒师算法”

    我正在解决旧编程竞赛中的一些示例问题 在这个问题中 我们输入了我们有多少调酒师以及他们知道哪种配方 每杯鸡尾酒的制作时间为 1 分钟 我们需要计算是否可以在 5 分钟内使用所有调酒师完成订单 解决这个问题的关键是尽可能高效地分配鸡尾酒 这就
  • 从 1 到 20 亿,像 (23,29) 这样相差 6 的连续素数对的数量

    如何在考虑时间复杂度的情况下从 1 到 20 亿 使用任何编程语言且不使用任何外部库 找到像 23 29 这样相差 6 的连续素数对的数量 尝试过埃拉托色尼筛 但获得连续素数是一个挑战 使用了生成器 但时间复杂度非常高 代码是 def ge
  • 欧拉项目 45

    我还不是一名熟练的程序员 但我认为这是一个有趣的问题 我想我应该尝试一下 三角形 五边形 六边形 数字由以下生成 公式 三角形 T n n n 1 2 1 3 6 10 15 五边形 P n n 3n 1 2 1 5 12 22 35 六角
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • 如何在 Unity 中对齐“轨道”或模块化对象?

    我正在开发一个简单的游戏 用户可以在其中放置不同但模块化的对象 例如 轨道 道路等 我的问题是 当将一个物体靠近另一个物体时 如何匹配和放置不同的物体 我的第一种方法是为每个模块对象创建一个隐藏的子对象 一个盒子 并将其放在可以放置其他对象
  • 迭代和遍历有什么区别?

    过去几周我一直在学习迭代器 我仍然不明白迭代链接列表和遍历链接列表之间的主要区别 我知道遍历意味着遍历 访问每个元素 链接列表 并且在迭代时基本上做同样的事情 但是有什么不同 为什么不能遍历所有内容 标准库数据结构 遍历 只是意味着遍历数据
  • 查找一个二维矩阵是否是另一个二维矩阵的子集

    最近我参加了一个黑客马拉松 我了解到一个问题 试图在 2d 矩阵中找到网格形式的模式 模式可以是 U H 和 T 并由 3 3 矩阵表示 假设我想展示 H 和 U 1 0 1 1 0 1 1 1 1 gt H 1 0 1 gt U 1 0
  • 基于 2 个输入的伪随机数生成器 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我需要根据 2 个输入值 X 和 Y 生成一个伪随机数 给定相同的 X 和 Y 值 我需要得到相同的结果 结果应介于 0 和 1 之间 含
  • 依次构建完整的 B 树

    如果我有一组排序的数据 我想以最适合顺序读取和随机查找的方式将其存储在磁盘上 那么 B 树 或其中一个变体 似乎是一个不错的选择 假设该数据集并不全部适合 RAM 问题是可以从一组排序的数据构建完整的 B 树而不进行任何页面拆分吗 这样排序
  • 寻找簇的中心

    我有以下问题 进行抽象以找出关键问题 我有 10 个点 每个点与其他点有一定距离 我想要 能够找到簇的中心 即与其他点的成对距离最小的点 令 p j p k 表示点 j 和 k 之间的成对距离p i 是簇的中心点 iff p i s t m
  • 如果找不到指定的图像文件,显示默认图像的最佳方式?

    我有一个普通的电子商务应用程序 我将 ITEM IMAGE NAME 存储在数据库中 有时经理会拼错图像名称 为了避免 丢失图像 IE 中的红色 X 每次显示产品列表时 我都会检查服务器中是否有与该产品相关的图像 如果该文件不存在 我会将其

随机推荐

  • xamarin 中路径共享违规

    我对 Android 编程很陌生 我有一个代码 它在指定的文件夹中创建一个文件 然后尝试向其中写入一些内容 就像下面这样 path System Environment GetFolderPath System Environment Sp
  • Inno Setup - 更改 MessageBox 语言

    我有这个问题 我做了一个个人消息框 我以一种非常有趣的方式输入了英语和西班牙语 但我希望我的安装程序只显示一种语言 就像 当我在菜单选择器西班牙语 在该消息框中显示西班牙语 如果在菜单选择器中选择意大利语 让该消息框显示意大利语 code
  • WebUSB API 无法找到兼容设备

    我正在尝试通过网页 通过 HTTPS 访问我的 USB 设备 我的 USB 设备已启动并正在运行 并且还启用了实验性 Web 平台功能 chrome flags enable experimental web platform featur
  • C# mvc 从 AJAX 调用返回 JSON 或文件

    我的观点中有这样的东西 var url Url Action DownloadZip Program programNums selectedRow ajax url url dataType json async false succes
  • Firebase 托管自定义域错误

    我最近获得了一个 tk 域名 并愿意将其作为自定义域名链接到 Firebase 托管 阅读文档并遵循教程后 我成功地将我的第一个应用程序部署到 Firebase 托管 可通过默认的 firebaseapp com url 访问它 但是 在尝
  • ASP.net 会员添加自定义列

    在我的母版页中 我有 MembershipUser thisUser Membership GetUser loggedInUserID thisUser ProviderUserKey ToString thisUser让我可以访问所有字
  • ionic 3 深度链接用于重置密码

    我正在使用 ionic 3 创建一个移动应用程序 我需要知道实现重置密码功能的逻辑 到目前为止 我可以向用户发送一封带有重置令牌的电子邮件 我在想 id 用户点击电子邮件中的链接 如果安装了应用程序 那么它应该打开专用于重置密码的应用程序页
  • 如何将轴标题的部分(一个或两个单词)设置为斜体

    有没有办法改变轴标题部分的样式 同时保持其余部分不变 就我而言 我怎样才能斜体y 轴标题中的 细菌 X 据我所知 该命令theme axis title y element text face italic 只能改变整个y轴标题 是吗 gg
  • Openerp 7 到 Odoo 8 - 如何转换数据库

    我正在尝试将 openerp7 迁移到 odoo 8 您知道如何将数据库版本 7 转换为较新的版本 8 吗 谢谢 选项1 要求odoo公 司做开放升级 https upgrade odoo com database upload通过有效的合
  • Ruby 浮点乘法的奇怪问题

    有人在 ruby 中解决这个问题吗 假设我们有 a 8 1999999 我们想将其四舍五入到小数点后两位 即 8 20 然后乘以 1 000 000 得到 8 200 000 我们这样做 a round 2 1000000 to i 但是我
  • NSString 长度和保留计数。需要澄清

    根据以下代码 请指教 NSString str NSString alloc initWithString Hello world NSLog Length lu n str length 11 NSLog Retain count is
  • numpy 负索引 a[:-0]

    我想使用数组切片来修剪我的数组 IE a trimmed a trim left trim right 这太棒了 除非trim right是 0 我得到a trim left 0 这是一个空数组 我想我可以 a trim left a sh
  • TransformClassesWithDesugarForDebug 出错

    我在编译 APK 调试或发布 时遇到问题 Android Studio 3 0 Beta 5 这是我的构建 gradle app buildscript repositories maven url https maven fabric i
  • Sql Server 中的按位与

    我有一个非常典型的情况 我们有一个名为 Users 的表 其中有一列名为 Branches varchar 1000 该组织可以有 1000 个分支机构 因此 如果用户有权访问分支 1 5 和 10 则分支字符串将如下所示 10001000
  • 为 JavaScript 代码创建循环[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想为以下 js 代码创建一个循环
  • 主键身份值因唯一键约束违规而增加

    我有一个 Sql Server 2008 表 其中有一个主键 Identity Yes 和构成唯一键约束的其他三个字段 此外 我有一个存储过程 用于将记录插入表中 并使用 SqlConnection 对象通过 C 调用存储过程 C 存储过程
  • 如何更新 Angular Array 中的现有项目(已从外部更改)?

    我是 Angular 新手 正在努力更新 Angular 数组中已从外部更改 不是通过 Angular 支持的 UI 的现有项目 这是用例 我的网页是通过服务器端调用填充的 我将数组加载到 Angular 中并显示在列表上 现在 如果服务器
  • 采访中的任务。我们该如何解决呢?

    以这种方式转换字符串 let initialString atttbcdddd result must be like this at3bcd4 但重复次数必须大于2 例如 如果我们有 aa 结果将是 aa 但如果我们有 aaa 结果将是
  • 使用模式中的数组复制到 postgres 中?

    我正在使用 Ruby Rails Postgres 我的表看起来像这样 架构方面 CREATE TABLE my table name my num double precision NOT NULL my string arr chara
  • BST 中的第二个最大值

    这是一道面试题 找到 BST 中的第二个最大值 最大元素是 BST 中最右边的叶子 第二个最大值是其父级或其左子级 所以解决方案是遍历 BST 找到最右边的叶子并检查其父节点和左子节点 是否有意义 不 那是错误的 考虑这个 BST 137