闭卷重建Trie节点与终止标记的ADT、表示不变量、操作与复杂度。
数据结构与抽象数据类型 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建插入、查找与删除的ADT、表示不变量、操作与复杂度。
闭卷重建前缀枚举与词典序的ADT、表示不变量、操作与复杂度。
闭卷重建压缩Trie与Radix Tree的ADT、表示不变量、操作与复杂度。
闭卷重建Ternary Search Trie的ADT、表示不变量、操作与复杂度。
闭卷重建自动补全与权重Top-K的ADT、表示不变量、操作与复杂度。
闭卷重建实验:Trie字典与前缀枚举的ADT、表示不变量、操作与复杂度。
机制:插入按缺边创建,查找逐字符,删除只回收不再通向任何键的后缀节点;实验:删除一个前缀键和一个独占后缀键并记录回收路径;边界:删除tea不能误删ten共享的te,取消terminal后节点仍可能有孩子。
机制:从根沿字符边走到节点,terminal区分完整键与仅前缀;公共前缀共享路径;实验:插入to、tea、ten并分别查询te与tea;边界:节点存在不代表键存在,空串是否允许也需由根terminal定义。
机制:把只有一个孩子的非终止链压成字符串边,减少节点但匹配需比较边标签最长公共前缀;实验:插入与现有边部分重合的键并执行边分裂;边界:边标签部分匹配时不能整边前进,删除后还要合并新的单链。
机制:定位前缀节点后DFS输出所有terminal路径,按字符有序遍历得到词典序;实验:为前缀ca输出限定数量结果并比较节点访问数;边界:字符编码和大小写归一化决定排序,返回前k项时无界DFS会浪费。
机制:节点可缓存子树最高权重或Top-K候选以加速补全,但更新键权重需沿路径维护缓存;实验:更新一个热词权重并验证祖先缓存变化;边界:缓存候选会增加更新成本和内存,过期缓存会返回错误排名。
机制:每节点存字符及小/等/大三向,内存与字符比较在字母表稀疏时折中;实验:插入字符串并追踪每字符的三向比较路径;边界:只有走equal才消费输入字符,走left/right仍比较同一字符。
机制:实现insert/contains/delete/startsWith/listPrefix并统计节点数;实验:覆盖空前缀、键是另一键前缀、删除共享路径和Unicode字符测试;边界:题面按Python字符处理,不把UTF-8字节长度误当字符数。