Мне нужно вычислить h-index из списка публикаций, которые я сохранил в дереве.
Что я сделал, так это обошел дерево в порядке убывания, получив список позиций.количество цитат
это выглядит так:
line 1 10
line 2 5
line 3 4
line 4 0
Я должен остановиться на строке 3 и вернуться 3. Проблема в приведенных примерах и в этом случае
line 1 4
line 2 0
line 3 0
останавливается на 2, потому что 4> 1, но 0> 3 - ложь.Он должен вернуть 1 вместо.Можете ли вы объяснить мне, почему?Я знаю, что это больше похоже на вопрос математика, но после этого мне может понадобиться повторно реализовать его, если что-то не так.
Вот код
int index_h_calc(rbtree_node n, int *i){
if (n == NULL) {
fputs("<empty tree>\n", stdout);
return 0;
}
if (n->right != NULL)
index_h_calc(n->right,i);
graduat *grad;
grad=n->value;
if(DEBUG)
printf("linea %d %d %s\n ",*i,(int)grad->tot,grad->name);
if(*i+1>=(int)grad->tot) {
return *i;
} else
*i+=1;
if (n->left != NULL)
index_h_calc(n->left,i);
return *i;
}