"ByteTrie" (数据结构)
"ByteTrie"
表示成员是字节序列的字典树 (trie).
更多信息
- 字节字典树可用于有效插入和成员测试:
-
CreateDataStructure["ByteTrie", start, end] 为从 start 到 end 的字节序列创建一个新的空 "ByteTrie" Typed[x,"ByteTrie"] 赋予 x 类型 "ByteTrie" - 对于 "ByteTrie" 类型的数据结构,可以使用以下操作:
-
ds["ByteLists"] 返回存储在 ds 中的字节序列,表示为字节列表的列表 时间:O(n) ds["ByteLists",s] 返回存储在 ds 中的以序列 s 开头的字节序列 时间:O(n) ds["ByteRange"] ds 可以容纳的字节范围 时间:O(1) ds["Copy"] 返回 ds 的副本 时间:O(n) ds["EmptyQ"] 若 ds 无元素,则为 True 时间:O(1) ds["FreeQ",s] 若字节序列 s 未储存在 ds 中,则为 True 时间:O(log n) ds["Insert",s] 将字节序列 s 插入 ds 时间:O(log n) ds["Length"] 储存在 ds 中字节序列的数量 时间:O(1) ds["MemberQ",s] 若字节序列 s 储存在 ds 中,则为 True 时间:O(log n) ds["NumericArrays"] 返回表示为数值数组的储存在 ds 中的字节序列 时间:O(n) ds["NumericArrays",s] 返回存储在 ds 中的以序列 s 开头的字节序列 时间:O(n) ds["Strings"] 返回表示为字符串列表的存储在 ds 中的字节序列 时间:O(n) ds["Strings",s] 返回存储在 ds 中的以序列 s 开头的字节序列 时间:O(n) - 还支持以下函数:
-
dsi===dsj 若 dsi 等于 dsj,则为 True FullForm[ds] ds 的完整形式 Information[ds] 关于 ds 的信息 InputForm[ds] ds 的输入形式 Normal[ds] 将 ds 转换为正规表达式 - 存储在 "ByteTrie" 数据结构中的字节序列可以表示为字节列表、字符串或数值数组.
- 字典树使用前缀来存储其元素,因而避免了其他数据结构——如使用哈希计算的数据结构——可能会遭遇的冲突问题.
范例
打开所有单元关闭所有单元基本范例 (6)
范围 (1)
信息 (1)
可使用 CreateDataStructure 创建新 "ByteTrie":
应用 (2)
命令完成 (1)
字节树的一种用途是用于命令完成. 可适用于 RandomWord 函数.
储存整数 (1)
有一种方法是使用位操作,但 IntegerDigits 也很有效: