比较身高平衡树和体重平衡树

时间:2018-07-20 04:35:20

标签: algorithm sorting data-structures tree binary-tree

我在想一个场景,其中高度平衡的树胜过重量平衡的树。以下是即使经过大量搜索也无法找到答案的问题:

  1. 这两棵树的时空复杂度相似,所以为什么我偏爱一棵树?

  2. 在某些应用中,重量平衡树比高度平衡树更受欢迎吗?

  3. 如果我想知道这些给定的树中哪些可以满足我的需求,我应该在CRUD查询模式中观察哪些功能?

1 个答案:

答案 0 :(得分:1)

高度平衡的树改善了最坏情况下的查找时间(对于二叉树,它将始终受log2(n)限制),但代价是使典型情况下的查找次数减少了大约一个(约一半)。节点将处于最大深度。

如果您的体重与查找频率有关,那么权重平衡的树将改善平均查找时间,但代价是使最坏情况变得更高(更频繁请求的项目具有更高的体重,因此倾向于放在较浅的树中,而成本较低的物品则在较深的树中。)

弄清楚什么最有效的最好方法是测量。如果您可以收集一些有代表性的查询流量,则可以简单地构建一个测试装备,在其中计算树的操作(插入,跟随子指针,...),然后针对高度平衡和权重平衡的罐装查询进行重放树。但是,通常来说,高度均衡的树越有效,即使请求频率遍及数据集越多,而且偏差越大,则从权重平衡的树中获得的优势就越大。