【发布时间】:2015-06-07 12:34:39
【问题描述】:
我有几百万个连续数字,例如{3, 1, 2, ...}。按照与它们相同的顺序,将数字插入到二叉搜索树中。我需要知道树的高度是多少。
有什么方法可以确定树的高度,而不用建一整棵树?
【问题讨论】:
标签: tree height binary-search-tree
我有几百万个连续数字,例如{3, 1, 2, ...}。按照与它们相同的顺序,将数字插入到二叉搜索树中。我需要知道树的高度是多少。
有什么方法可以确定树的高度,而不用建一整棵树?
【问题讨论】:
标签: tree height binary-search-tree
如果它作为构建的一部分进行平衡,则它是 log2(n),其中 n 是数字的计数。否则,这是最好的情况,最坏的情况是 n。
【讨论】:
我不知道任何算法。快速的想法是它可以沿着这条线 - 第一个元素是根,树高是 1,然后检查接下来的两个元素,根据它们的高度 h = 2 或 3,然后检查接下来的 4 个元素,具体取决于它们是什么h = h + (1 or 2 or 3 or 4) 然后检查接下来的 8 个元素和 h = h + (f(elements) - 返回这些元素增加树高多少的函数) 等等...这只是非常简化的示例关于我会努力追求的东西。甚至不确定它是否会比简单地构建树并沿线保存高度信息更快,但如果您设法编写该函数,至少它会就地执行。顺便说一句,这是一个有趣的问题。
【讨论】: