ツリーに保存されている出版物のリストからを計算する必要があります。h-インデックスの計算
line 1 10
line 2 5
line 3 4
line 4 0
私は3行目で停止しなければならないと問題3.戻る:私はそれがどのように見えるの引用
の位置番号のリストを取得漸減ためにツリーをトラバースされたのは何
与えられた例があり、この場合、4> 1しかし0> 3が偽であるため、2で停止します。代わりに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;
}
... "h-indexを* n * - 1として返します。"さもなければそれは私の右に聞こえます... – Dmitri
@Dmitri:いいえ、それは 'i - 1'でなければなりません。 OTの最初の例を考えてみましょう.4行目( '0 <4'のため)で停止し、' 4 - 1 = 3'のh-インデックスを返します。 2番目の例では、2行目で停止し、1を返します。 – deprecated
おっと...何らかの理由で私が「n」と「i」を後ろ向きにしていると書いたとき。 – Dmitri