lightblueme

许多问题需要说清楚就可以&&走永远比跑来的重要

导航

胜者树

胜者树实现

从空间复杂度上看,胜者树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

[6] http://blog.csdn.net/whz_zb/article/details/7425152

posted on 2020-03-29 18:07  lightblueme  阅读(438)  评论(0编辑  收藏  举报