問題タブ [ternary-tree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
15 に答える
20482 参照

algorithm - 三分探索があるのになぜ二分探索を使うのですか?

最近、配列を3つの部分に分割して比較する3値検索について聞いたことがあります。ここでは2つの比較がありますが、配列はn/3に減少します。どうしてこんなに使わないの?

0 投票する
4 に答える
4105 参照

algorithm - 三分探索木のバランスをとる

三分探索木の「バランスをとる」にはどうすればよいでしょうか。ほとんどのtst実装はバランシングに対応していませんが、最適な順序で挿入することをお勧めします(これは制御できません)。

0 投票する
2 に答える
4421 参照

c++ - 三分探索木

文字列を使用して単語のシーケンスを追加すると、セグメントadd()内に印刷され if(t==NULL)ますが、ツリーが形成されません。つまり、ノードがリンクされません。

0 投票する
3 に答える
18392 参照

c++ - エラー: 不完全なクラス型へのポインタは許可されていません

三分木を実装している間、私はこのステップで困惑しています:

マウス アイコンを の近くに移動するpと、赤い色とエラーが表示されます。

私の質問は、不完全なクラスとは正確には何ですか? 助けてください、ありがとう。

0 投票する
1 に答える
768 参照

c++ - 三分探索木内でワイルドカードを検索する (使用しない)

「三分探索木」ライブラリ ( sourceforge & http://code.google.com/p/ternary-search-tree/ )から再帰関数を変更したい。デフォルトの動作では、指定されたワイルドカード文字列に一致するすべての文字列を三分検索ツリーで検索します。つまり、ツリーに 'KEY'、'KE1'、'KE2' があると、'KE*' を検索するとすべてのエントリが見つかります。しかし、逆の動作が必要です。指定された文字列に一致するすべてのエントリを (ワイルドカードを含む) 三分探索ツリーで検索します。つまり、ツリーに 'KE*'、'KEY'、'K*' があると、'KEY' を検索するとすべてのエントリが見つかるはずです。

ツリー/ノードは次のように定義されます。

そして、デフォルトの動作を持つ関数:

pmVectorPtr は int の Vector への Pointer であり、関数 get は root-element と searchkey を引数として呼び出されます。私はすでにそれを適応させようとしましたが、まだ理解できていません。私自身のコード:

私はこれをデバッガを広範囲に使用してコーディングしましたが、私が知る限り、動作するように見えます (ワイルドカードが文字列の先頭または途中にある場合でも)。しかし、例に「K*」と「Ke*」を追加すると、「Key」のソリューション (この場合は Ke*) が 1 つしか見つかりません。ツリーから 'Ke*' を削除すると、'Key' の検索クエリに対して 'K*' が見つかります。理由はまだわかりません。

それについてのアイデアはありますか?


付録(私のテストケース):

0 投票する
3 に答える
105 参照

c++ - エラーを与える三分木

これは単純な三分木構造です。コードを正しく記述しましたが、実行中にしばらくすると次のように表示されます。

申し訳ありませんが、ternary.exe が動作を停止しました。

このエラーの原因を教えてください。

0 投票する
0 に答える
187 参照

c++ - if( ! node->next ) をチェックするとき、node->next =0x4 は NULL にする必要があります

だから私は三分木を書いていて、おそらく20回の挿入後にセグフォルトが発生します。GDB で問題を特定すると、今まで見たことのない非常に奇妙なエラーが発生します。

以下のコードのステートメントでは、より大きなノードは別のノードであり、そのノードは NULL (または別のノード) である必要がありますが、GDB にいてその値をチェックすると、*tempNode->0x4 を取得します。これにより、コードはより大きな値を設定しようとします ( 0x4) を現在のノードとして使用し、セグ フォールトを発生させます。

GDB の出力は次のとおりです。 (gdb) p *tempNode->greater Cannot access memory at address 0x4

何時間も立ち往生しています、何かアイデアはありますか?