提出一个算法,从一个最初空的BST开始,然后制作' n'随机插入。使用一个统一的随机数生成器来获取要插入的值。测量生成的BST的高度,并将此高度除以log2n。对于n = 100,500,1000,2000,3000 ....,10000这样做。绘制比率高度/ log2n作为n的函数。比率应近似恒定(约为2)。验证是这样的。
我的理解:
现在我们都知道BST的高度是log2n,其中' n'是树中元素的数量。如果它是左倾斜/右倾斜树,则高度等于' n'。因此,如果我们在这里测量高度,我们应该假设插入的高度是随机的。我的意思是,该比率如何总是在2左右。
我正在撞击这个。
答案 0 :(得分:1)
如果是左倾斜/右倾斜树,则高度等于' n'。因此,如果我们在这里测量高度,我们应该假设插入的高度是随机的
此二叉树的高度为n
。你不必在这里做任何事情。此外,完全平衡的BST的高度是log(n)(通常不是)
提出你的问题,我假设你要求找到随机构建二叉树的高度。在这种情况下,您不必计算任何特定二叉树的高度。
即使偏斜树的高度为n
,它在均匀随机分布中生成的可能性也非常小。因此,如果你计算随机BST的高度,那么它将变为O(log n
)。
要进行准确计算,请参阅Randomly build BST has logarithmic height