gpt4 book ai didi

c - 在 C 中打印一个 Trie

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:52 25 4
gpt4 key购买 nike

几乎完成了这个尝试的打印。但是遇到了一点麻烦。我目前有:

    void printSubtree(struct trie *subtree, char word[100], int level) {
int i;

if (subtree == NULL){
return;
}

if (subtree->wordEnd) {
word[level] =0;
printf( "%s \n ", word);

}
for (i = 0; i<26;i++) {
if (subtree->children[i]!= NULL) {
word[level] = 97 + i;
level++;
printSubtree( subtree->children[i], word, level);
}
}
}

当我这样做时,它会跳过第一个字母,所以我有另一个包含此片段的片段,它打印第一个字母,然后调用 printSubtree 来打印相应第一个字母的其余字母。

    for (i = 0; i<26;i++) {
if (temp->children[i]!= NULL) {
arr[0] = temp->children[i]->letter;
printSubtree(temp->children[i], arr, 1);
}
}

但发生的是它没有正确打印出 trie。例如,如果“bro”和“brim”在我的 trie 中,则打印出“bro”然后是“brio”,而不是 brim。

提前致谢。

最佳答案

据我了解,如果递归是在部分进行的

for (i = 0; i < 26; i++)
{
if (subtree->children[i] != NULL)
{
word[level] = 97 + i;
level++;
printSubtree(subtree->children[i], word, level);
}
}

变量 level 会增加,但不会减少,这意味着它会为每个 child 累积。以下更改应按预期工作。

for (i = 0; i < 26; i++)
{
if (subtree->children[i] != NULL)
{
word[level] = 97 + i;
// increment level for the recursive calls
printSubtree(subtree->children[i], word, level + 1);
}
}

关于c - 在 C 中打印一个 Trie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33267465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com