k树的高度

时间:2015-03-05 09:43:37

标签: c recursion tree

我正在尝试实现一个计算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 ??
}

你能帮我解决这个功能的其余部分吗?

1 个答案:

答案 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;
}