我编写了一个程序来用 C++ 实现一个基本的 Trie,每个节点都有 26 个子指针(用于英文字母),Node 类如下所示:
class Node
{
public:
Node* parent;
Node* child[26];
unsigned int number_of_children;
....
}
现在,可能有很多单词,如 {snapple, dapple}, {distract,tract} 等,其中超过 3 个字母匹配。我想存储这些子词的不同条目(例如上面的示例 - apple, tract),并让其他人指向它们(例如 {sn-ptr_to_apple, d-ptr_to_apple}, {dis-ptr_to_tract, at-ptr_to_tract} )。我相信最好在插入单词时处理这个问题,而不是在插入完成后有一个函数来执行这个。
我需要一些帮助来设计这个,目前我不是在研究执行效率,而是代码/设计应该是紧凑的。目前,我访问一个节点并检查所有非空兄弟姐妹(通过遍历兄弟姐妹的孩子)是否与输入单词匹配,然后存储指针以防匹配 4 个单词(但代码正在获取更长且令人困惑)。