【问题标题】:Determine height of a binary search tree C++确定二叉搜索树的高度 C++
【发布时间】:2014-04-30 04:37:07
【问题描述】:

创建确定二叉搜索树类高度的方法的最佳方法是什么?例如:如果 bst.height() 仅包含 1 个项目,则它会返回 1;如果它包含 3 个项目并且是平衡的,则返回 2,否则返回 3;如果它包含 4 个项目并且是平衡的,则返回 3,否则返回 4。这可能与通常的实现有些不同。

【问题讨论】:

  • 你可以认为一个节点的高度为 max(leftSubtree,rightSubtree)+1。使用它,您可以按自己的方式工作到根级别
  • “计算二叉搜索树高度的最佳方法”可能重复:stackoverflow.com/q/575772/716443
  • @DavidO 是的,但我指的不是自平衡树。
  • 如果树不是自平衡的,并且您一次输入一个元素的完全排序的数据,您最终将得到一棵有一条长腿和一条缺失腿的树;实际上是一个平面链表。这意味着“走树”的最坏情况将是 O(n)。在这种情况下,最好跟踪插入、删除和重新平衡。这样每次都会给你一个 O(1) 的答案,而且在运行中保持跟踪的开销很小。

标签: c++ binary-search-tree


【解决方案1】:

最快的方法是在插入和删除时更新高度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多