有一种递归的方式来计算级别,这很相似,但是不起作用。我的错是什么?
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/