問題は、Ancestor Matrix が 1 と 0 のビットマップとして与えられ、対応するバイナリ ツリーを構築することです。誰かがそれを行う方法についてアイデアを教えてもらえますか? Stackoverflowで解決策を見つけましたが、行a[root->data][temp[i]]=1
が間違っているようです。ノードにデータ 1 から n が含まれるというバインディングはありません。たとえば 2000 が含まれている可能性があります。この場合、a[2000][some_column]
ノードは 7 つしかないため、行列には 7 つの行と列があるため、 はありません。
1243 次
1 に答える
1
ふたつのやり方:
ノード値がすべて 1 から になるように正規化します
n
。1, 2, 5000
たとえば、ノードがある場合は、それらを作成します1, 2, 3
。これを行うには、ラベルをソートまたはハッシュし、normalized[i] = normalized value of node i
.normalized
非常に大きなラベルやテキスト ラベルがある場合は、マップ/ハッシュ テーブルにすることができます。これには、ハッシュテーブルまたはセットで実装可能な疎行列を使用できる場合があります。ハッシュテーブルのハッシュテーブルを保持します。
H[x]
値を格納する別のハッシュ テーブルを格納しますy
。したがってa[2000][5000] = 1
、あなたが持っていた素朴なマトリックスソリューションの場合、 => を使用します=> 2000行目に格納された値H.get(2000)
のハッシュテーブルを返します=> => 必要な値を返します。H'
H'.get(5000)
于 2012-10-19T15:20:08.950 に答える