双数组字典树

双数组字典树

双数组较普通字典树的优势在于,双数组字典树的空间占用少。一个普通的字典树,假设是二叉的,树中的一个节点将需要两个指针,一个整型,需要20字节。而双数组字典树是完全二叉树,指针信息隐藏在数组的下标中。从字典树发展为双数组字典树,就是记录式改计算式。

其中有两个数组,base数组中,check数组。base[i]存储的值用来计算第i个节点的孩子节点。例如某节点下面有b,c,f三个字符,该节点的base值为7,则b存放在第7 + 1的位置,c存放在7 + 2的位置。check[i]表示第i个节点的父节点的下标。除了需要记录孩子和父亲信息,还需要记录flag。可以用base中值的正负来表示flag。

猜你喜欢

转载自blog.csdn.net/weixin_42946821/article/details/82960786
今日推荐