我正在尝试实现一个计算k-ary树高度的函数。我的树结构是这样的:
struct node {
int kids_num;
int data;
struct node **kids;
};
功能:
int height(struct node *root)
{
if (root == NULL)
return -1;
for (int i = 0; i < root->kids_num; i++)
{
height(...)
}
return ??
}
你能帮我解决这个功能的其余部分吗?
答案 0 :(得分:3)
树的高度,是其子树高度的最大值+ 1。 没有子树的树的高度是1.
然后,函数高度应该获得每个子索引的高度,并保持这些值中的最大值。它返回这个最大值+1。
int height(struct node *root)
{
if (root == NULL)
return -1;
int maxHeight = 0;
for (int i = 0; i < root->kids_num; i++)
{
int h = height(root->kids[i]);
if (h > maxHeight)
maxHeight = h;
}
return maxHeight + 1;
}