一棵榕树的高度

Height of a k ary tree

我正在尝试实现一个计算 k 叉树高度的函数。我的树结构是这样的:

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。 没有子树的树的高度是1。

函数 height 然后应该得到它的每个子树的高度,并保留这些值中的最大值。就是returns这个最大值+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;
}