【发布时间】:2017-07-18 20:40:35
【问题描述】:
我正在使用带有 c 中以下结构的 trie 编写字典
struct trie_node {
int is_end; //0 is is not the end of the word ,otherwise 1
char c;
struct trie_node* child[26];
};
我能够插入单词、搜索单词,并且我想打印字典中的所有单词。不知道如何处理。我正在尝试打印
void print(struct trie_node node) {
int i = 0;
for (i = 0; i < 26; i++) {
if (node->child[i] != NULL) {
printf("%c", node->child[i]->c);
print(node->child[i]);
}
}
}
但打印不正确 例如,如果我有的话 啤酒 蜜蜂 熊 野兽
正在打印 熊熊 它应该打印 熊熊蜂啤酒
如何正确打印单词列表?
【问题讨论】:
-
当您递归调用
print(node->child[i]);时,您不会打印祖先节点中的任何字符。所以在打印bear之后,您的程序会在beast的末尾打印st,而不重复前三个字符。 -
您没有提供足够的信息让我们重现您描述的问题;尝试将您的 example 从 English 移动到 C 或 C++ (并确保它可以编译和运行,这样我们就可以重现您描述的问题)...另一件事是,您需要选择一种语言; C 或 C++。如果您的代码使用 C 编译器编译,您可以选择 C。否则,选择 C++。
-
@zancudo,请在下面查看我的答案,如果您尝试过,请告诉我。