虽然很难找到“基数树”的一致定义,但大多数接受的基数树定义表明它是一个压缩的前缀树。我正在努力理解的是在这种情况下术语“基数”的重要性。为什么压缩的前缀树如此命名(即Radix Tree),而未压缩的前缀树不称为 Radix 树?
答案 0 :(得分:1)
维基百科可以回答这个问题,https://en.wikipedia.org/wiki/Radix:
在数学数字系统中,基数或基数是数字 唯一数字,包括零,用于表示a中的数字 位置数字系统。例如,对于十进制系统( 今天使用最常见的系统)基数是十,因为它使用了 从0到9的十位数。
和树https://en.wikipedia.org/wiki/Radix_tree:
数据结构,表示每个空间优化的trie 唯一的子节点与其父节点合并。结果是 每个内部节点的子节点数至少为 基数树的基数r,其中r是正整数,幂是x 2,x≥1
最后检查字典:
1.radix(名词)
一个原始单词,其他单词从中弹出。
基数树中的基数决定了树的子(或深度)数量与'稀疏'之间的平衡,或者有多少后缀是唯一的。
编辑 - 详细说明
每个内部节点的子节点数至少为基数r
让我们考虑“aba,异常,痤疮和深渊”这两个词。在常规前缀树(或trie)中,每个弧都会为单词添加一个字母,因此我们有:
-a-b-a-
n-o-r-m-a-l-
y-s-m-a-l-
-c-n-e-
我的绘图有点误导 - 在尝试中字母通常位于弧上,因此' - '是一个节点,字母是边缘。请注意,许多内部节点有一个孩子!现在是紧凑(和明显)的形式:
-a-b -a-
normal-
ysmal-
cne-
现在我们有一个内部节点(在b后面)有3个孩子!基数是2的正幂,在这种情况下为2。为什么2而不说3?首先请注意,根有2个孩子。另外,假设我们想要添加一个单词。选项:
b
前缀 - 好吧,4大于2。b
孩子的优势 - 说'异常'。那么插入的方式共享部分将分裂,我们将:相关分支:
-normal-ly-
-
normal现在是一个内部节点,但有2个子节点(一个叶子)。
- 另一种情况是删除痤疮,例如。但是现在compactness属性表示b
之后的节点必须合并回来,因为它是唯一的子节点,所以树成为
树:
-ab-a
-normal-ly-
-
-ysmal
所以,我们仍然保持孩子> 2。
希望这澄清!