胜者树
胜者树实现
从空间复杂度上看,胜者树or败者树应该会占用更大的空间。在胜者树的内部节点存储的不是实际的数据,而是胜出的节点的索引,这点有点类似B+树。
下面简单实现一下胜者树。
public class SuccessTree{
int [] data;
int [] victoindex;
public SuccessTree(int length){
data = new int[length];
victorindex = new int[length];
}
}
这里的关键是这棵胜者树如何组织,假设我们采用下面的方式来组织胜者树,是否是合理的呢?其中紫色节点为叶子节点,蓝色为内部判断节点。
我们假设零度节点个数,一度节点个数,二度节点个数分别为:$n_{0},n_{1},n_{2}$
则有
$n_{0}+n_{1}+n_{2}= 1+ 2*n_{2}+n_{1}$,即
$n_{0}= 1+ n_{2}$
假设组成的败者树是正确的,那么应该是没有一度节点的,所以总的节点个数是
$2*n_{2}+1$,也就是是奇数个,这样的满二叉树肯定是没有一度节点的
所以这样的组织方式可以接受!
http://blog.csdn.net/sqx2011/article/details/8241734
[1] http://www.cnblogs.com/qianye/archive/2012/11/25/2787923.html
[2] http://blog.csdn.net/baisung/article/details/7671329
[3] http://blog.csdn.net/zzran/article/details/8273584
[4] http://shmilyaw-hotmail-com.iteye.com/blog/1776132
[5] http://blog.csdn.net/tiantangrenjian/article/details/6838491
posted on 2020-03-29 18:07 lightblueme 阅读(438) 评论(0) 编辑 收藏 举报