【发布时间】: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) 的答案,而且在运行中保持跟踪的开销很小。