c - 如何在C中找到一棵特里树的高度

标签 c tree height trie radix

我在编写查找 trie 树高度的算法时遇到了问题。我不知道如何开始或如何做。抱歉,如果这是一个“菜鸟”问题,但我对尝试还很陌生,这是我的作业中唯一缺少的部分。

总之这里是 trie 树的结构:

typedef struct RegTrie * ImplTrie;
typedef struct RegTrie {
  Boolean IsItAWord; /* true if it is a word, false if it is not a word */
  ImplTrie children[ALPHABETsize];
} RegTrie;

所以基本上,如果 'a' 是一个 child ,那么 children[0] 中会有一个 Trie,如果 'b' 不是 child ,那么 children[1] 将为 NULL。如您所见,字符是由链接索引隐式定义的,如果过去节点的字符组成一个词直到当前节点,'Boolean IsItAWord' 将为真。

你们能帮我解释一下吗?我唯一知道的是高度可以由最长单词的长度 + 1 来定义。但我不知道该怎么做。我真的只是想要一个解决方案,所以任何找到这个 trie 高度的方法都将不胜感激。

谢谢。

最佳答案

您可以使用接受 ImplTrie 并返回 int 的递归函数来实现。

基本情况检查 ImplTrie 是否为 NULL,在这种情况下函数返回 0

否则,该函数会在 children 中循环,调用自身,选择最大值,然后返回最大值加一。

int height(ImplTrie t) {
    if (!t) return 0;
    int res = 0;
    for (int i = 0 ; i != ALPHABETsize ; i++) {
        int h = height(t->children[i]);
        if (h > res) {
            res = h;
        }
    }
    return res + 1;
}

关于c - 如何在C中找到一棵特里树的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27162047/

相关文章:

c - 在 C 中使用 fork() 和 TCP 连接进行设计

c - int 数组转 char 指针

Python:获取树中所有可能路径的列表?

javascript - 垂直居中,绝对定位的子力父高度匹配

html - 按顺序对齐具有不同高度的两列中的元素

javascript - 算法在一个非常大的数组中查找重复项

c - 为什么在 o/p 中 i 的值不同

c++ - 用指针构建树

bash - 使 linux 树 bash 脚本显示文件

css - 同位素默认高度尺寸削减内容