有一种递归的方式来计算级别,这很相似,但是不起作用。我的错是什么?

struct s_node
{
  struct s_node * left;
  struct s_node * right;
  int value;
}
typedef struct s_node * t_node;
int levels (t_node tree)
{
  if(tree != NULL)
  {
    return 1+levels(tree->left)+levels(tree->right);
  }
  else
       return 0;
}

最佳答案

这将计算节点总数。如果要“计算级别”(我假设这意味着要确定树的高度),则可以将代码修改为如下所示:

int max(int a, int b)
{
    if (a > b)
        return a;
    return b;
}

int levels (struct s_node * tree)
{
    if (tree != NULL)
    {
        return 1 + max(levels(tree->left), levels(tree->right));
    }
    else
        return 0;
}


请注意,那里可能仍然存在C错误,我已经很多年没有使用C了,但是您应该了解算法的想法。

关于c - 计算C上的BST叶子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21636788/

10-15 00:27