二叉搜索树是平衡的吗?

2024-04-17

这已经讨论过了here https://stackoverflow.com/questions/742844/how-to-determine-if-binary-tree-is-balanced,但我在下面有一个实现(线程中从未讨论过),

public boolean isBalanced(BSTNode node) {
    if(maxHeight() > (int)(Math.log(size())/Math.log(2)) + 1) 
        return false;
    else
        return true;
}

其中 maxHeight() 返回树的最大高度。基本上我正在检查 maxHeight > log(n) ,其中 n 是树中元素的数量。这是正确的解决方案吗?


这个解决方案是不正确的。平衡树是平衡的,如果它的高度是O(lg(n)),因此它(高度)需要小于c*lg(n)- 对于一些常量c。您的解决方案假设该常数为 1。

请注意,只有一个完整的树 http://en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees是有身高的lg(n)确切地。

寻找例如斐波那契树 http://lcm.csa.iisc.ernet.in/dsa/node112.html, which is平衡树(实际上是最坏的情况AVL tree http://en.wikipedia.org/wiki/AVL_tree)。然而 - 它的高度更大lgn (~1.44*lg(n)),并且建议的算法将返回不平衡的斐波那契树。

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

二叉搜索树是平衡的吗? 的相关文章

随机推荐

  • 在 PowerShell 中检查路径是否存在的更好方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 PowerShell 中是否有更简洁且不易出错的方法来检查路径是否不存在 对于这样一个常见的用例来说 客观上来说太冗长了 if not Test
  • Symfony2 创建自己的编码器来存储密码

    我是 Symfony2 的新手 我可能有一个关于在数据库中编码用户密码的简单问题 我想以这种方式编码并存储在数据库中我的用户密码 encoded password salt sha1 salt raw password 我找到了各种编码器
  • 是Pythonic吗:命名lambdas

    我开始欣赏 python 中 lambda 表达式的价值 特别是在函数式编程方面 map 函数返回函数 https stackoverflow com a 16509 1533474等等 但是 我也在函数中命名 lambda 因为 我多次需
  • fseek() 按行而不是字节?

    我有一个可以逐行解析大文件的脚本 当它遇到无法处理的错误时 它会停止 通知我们解析的最后一行 这真的是寻找文件中特定行的最佳 唯一方法吗 fseek 在我的情况下不可用
  • ASP.NET 日期和时间选择器?

    我将 ASP NET 2 0 与 SQL Server 2005 结合使用 我希望用户选择日期和时间 然后将这些值保存到数据库中 在 VS 中 我可以使用日历控件来获取日期 但是处理用户选择的日期以及用户还必须从控件中选择的时间有什么好处
  • 如何删除 Rmd 输出到 PDF 中代码块之间的空白?

    如何删除图表末尾与下一个图表之间的多余空白 我有一个闪亮的应用程序 运行参数化的 Rmd 输出为 html 和 PDF html 很好 但 PDF 中有太多空白 我应该将所有内容都放入两页中 因此边距 几何形状很软 但是我需要在第 1 页底
  • 使用 LaTeX,如何在每个部分的末尾提供参考文献列表? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想为每个部分生成参考书目 并将其放在该部分的末尾 当我现在这样做时 它会生成完整的参考书目并将其放置在每个部分之后 有没有办法可以做到这一点 建议h
  • AFJSONRequestOperation 数组填充,但无法在成功块之外填充 NSLog 内容

    以下代码摘自本教程 http mobile tutsplus com tutorials iphone ios sdk afnetworking 我以前用过这个片段 但之前从未注意到这个问题 数组内容的 NSLog 在委托方法中打印 但不在
  • Socket IO 涉及磁盘 IO 吗?

    如果一个进程通过套接字向同一台机器上的另一个进程发送数据 传输过程中发生磁盘读 写的可能性有多大 似乎有一个套接字文件类型 如果有空闲内存 这些文件是否保证在内存中 不直接 TCP UDP 网络套接字 本地主机或 UNIX 域套接字将在内存
  • 使用 NumPy 的数据类型大小

    在 NumPy 中 我可以通过以下方式获取特定数据类型的大小 以字节为单位 datatype itemsize or datatype nbytes 例如 np float32 5 itemsize 4 np float32 5 nbyte
  • 如何从给定 C# 链接的特定 GitHub 存储库中获取文件列表?

    如何从 GitHub 链接获取文件列表 例如 来自此 GitHub 存储库链接 https github com crs2007 ActiveReport tree master ActiveReport SQLFiles 我们可以看到有S
  • 自动执行 rake 任务以在 Heroku 上启动时运行?

    假设有一个任务 rake startupscript 它应该在应用程序启动时运行 我们如何在heroku上自动化它 我知道有一个 heroku 调度程序 但它会每 10 分钟运行一次任务 而不是只在启动时运行一次 我也知道Procfile
  • 如何撤消“git add --intent-to-add”

    当我跑步时git add intent to add 所有未跟踪的文件都从 未跟踪的文件 更改了状态 git status s showed 到 未暂存提交的更改 git status s现在显示A 现在 每当我跑步时git diff我也看
  • GNU Radio OOT 模块 AttributeError:“模块”对象没有属性“MME_cpp”

    我知道这个问题以前曾被问过 但我没有找到有用的解决方案 完整的错误是 Executing home mint Documents test sensor cycl test top block py Using Volk machine a
  • 如何标记条件编译的use语句? [复制]

    这个问题在这里已经有答案了 是否可以将某些包含标记为仅包含在相关操作系统中 例如 你可以这样做 cfg unix use std os unix io IntoRawFd cfg windows https doc rust lang or
  • 在有关资源、主题和章节的规范化数据库中使用 GROUP BY 进行 JOIN

    我已经规范化了我的数据库 但似乎无法以正确的方式返回我正在寻找的数据 我有 5 张桌子 资源 5 个资源 主题 10 个主题 章节 10 章 主题到资源 18 个主题到资源链接 主题到章节 18 个主题到章节的链接 看看这个SQL小提琴 h
  • ASP.net:ClientScript.RegisterClientScriptBlock 在加载 jQuery 之前触发

    我最近查看的一些继承代码中出现了有趣的问题 我正在尝试向项目添加压缩模块 它加载所有 JS 和 CSS 文件 组合它们 缩小它们 并压缩它们 我尝试了多种解决方案 但它们都有一个致命的问题 我有一些 javascript 通过 Master
  • 处理包含“问号”(�) 的字符串时出现编码问题

    我正在解析响应中的一些网页内容HttpWebRequest 该网页内容正在使用字符集ISO 8859 1当解析它并最终从响应中得到所需的单词时 我收到了string带有这样的问号 我想知道将其转换回可读的正确方法string 所以 我尝试的
  • 在 next.js 中调用 API 并避免 CORS 错误的最佳实践

    我正处于设置 next js 应用程序的早期阶段 到目前为止我只有使用 React 的经验 我在 localhost 3000 上设置了一个前端应用程序 next js 在 localhost 5000 上设置了一个后端应用程序 node
  • 二叉搜索树是平衡的吗?

    这已经讨论过了here https stackoverflow com questions 742844 how to determine if binary tree is balanced 但我在下面有一个实现 线程中从未讨论过 pub