gpt4 book ai didi

c++ - 如何递归查找 Trie 树的高度

转载 作者:行者123 更新时间:2023-11-27 23:02:29 26 4
gpt4 key购买 nike

我在弄清楚如何找到 trie 树数据结构的高度时遇到了一些麻烦。我知道对于 AVL 树,一个简单的递归高度函数是:

height(nodeType *node) const
{
if(node == NULL)
return 0;

// if tree is not empty height is 1 + max of either path
return 1 + std::max(height(node->left), height(node->right));
}

但是现在我的特里树有一个有 26 个不同索引的 child ,必须有一种简单的方法来找到最大高度而不用输入所有 26 个不同的可能索引。我该怎么做?

int height(trieNodeType *node) const
{
if(node == NULL)
return 0;

for(int i = 0; i < 26; i ++) {
//has to be something to do with a for loop,
//i know that much
}
}

最佳答案

循环是要走的路。

C++11:

if (node == nullptr) return 0;

auto i = std::begin(node->children);
auto end = std::end(node->children);

auto max_height = height(i++);

while (i != end) {
max_height = std::max(max_height, height(i++));
}

return 1 + max_height;

C++ <11.

if (node == NULL) return 0;

trieNodeType ** i = node->children;
trieNodeType ** end = i + (sizeof(node->children) / sizeof(trieNodeType *));

int max_height = height(i++);

while (i != end) {
max_height = std::max(max_height, height(i++));
}

return 1 + max_height;

关于c++ - 如何递归查找 Trie 树的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392828/

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