c 中是否有 max 函数,所以我可以做这样的事情来计算树高
:或者也许有更好的方法来计算树高。
int height(struct node *tree)
{
if (tree == NULL) return 0;
return 1 + max(height (tree->left), height (tree->right));
}
如果是的话我需要什么?
目前我收到此错误:
dict-tree.o:在函数“高度”中:
/home/ex10/dict-tree.c:36:对“max”的未定义引用
不,没有内置函数。通常您会编写自己的内联函数,例如
static inline int max(int a, int b)
{
return (a > b) ? a : b;
}
(使用编译器喜欢的任何“内联”提示语法)。不过,就您而言,您也可以手动拼写出来 - 这很简单:
int height(struct node *tree)
{
int height_left, height_right;
if (tree == NULL) return 0;
height_left = height (tree->left);
heigth_right = height (tree->right);
return 1 + ((height_left > height_right) ? height_left : height_right);
}
注意:当心最大宏陷阱。做类似的事情很诱人
#define MAX(a,b) (((a) > (b)) ? (a) : (b))
然后您可以将其用于任何输入,无论其类型如何,但这里的问题是,如果任何一个输入表达式有副作用,例如MAX(++i, ++j)
。那么问题是,对于最大的输入,副作用将被评估两次。如果您要编写 max 代码,则必须使用(内联)函数而不是宏。不幸的是,由于您使用的是 C 而不是 C++,没有重载/模板,这将限制您每个命名 max 函数只能使用一组输入/输出类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)