抱歉我的英语不好。不是我原来的语言。
我的问题是我想知道一般树的高度,我不知道这是用英语调用的。
树的结构是:
struct GTnode{
int data;
nodeGT *fc; //first child
nodeGT *nb; //next brother
}
每个下一个兄弟与第一个孩子处于同一水平,每个第一个孩子都有+1级。
这是我的代码,但我不确定是否正确:
int height(GT *root){
if(root == null){
return 0;
}
else{
int max=0;
int h;
h = height(root->fc);
if(h > max){
max = h;
}
max = max + 1;
h = height(root->nb);
if(h > max){
max = h;
}
return max;
}
}
答案 0 :(得分:2)
您的代码似乎没问题。我会让它更紧凑:
#include <algorithm>
int height(GT *root) {
return root ? std::max(height(root->fc) + 1, height(root->nb)) : 0;
}
答案 1 :(得分:0)
我只看到一个问题:你没有检查是否有孩子或兄弟。
当然,这有点冗长。我按如下方式编写代码:
int GTnode::height()
{
int hb = fb ? height(fb) : 0;
int hc = fc ? height(fc) : 0;
return std::max(hb, hc+1);
}