問題タブ [modified-preorder-tree-t]

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 投票する
1 に答える
424 参照

c++ - アルゴリズムDFSによって検出されたスパニングツリーは常にプレオーダーで表示されますか?

スパニングツリーを見つけるためにc++でDFSアルゴリズムの実装を行っていますが、アルゴリズムDFSを使用したスパニングツリーの出力は常に事前注文ですか、それともまったくの偶然ですか?

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

c++ - アルゴリズムBFSを使用してスパニングツリーの事前順序を示す方法

スパニングツリーを見つけるためにC++でBFSアルゴリズムの実装を行っています。スパニングツリーの出力は事前に表示する必要がありますが、実装に疑問があります。正確にわからない場合にツリーを構築する方法多くの子供が各ノードを持っていますか?ツリー構造を再帰的に検討するツリーのデータ構造は次のように記述できます。

ただし、前述のようにこの実装が機能するとは思わないでください。

これは、ツリーを事前順序で返すための私の関数です。

また、ツリー構造を使用せずにノードの事前順序付けを行う方法はないかと思います。

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

c++ - BSTのプレオーダートラバーサルを印刷するときに、プログラムが何も実行しないのはなぜですか

ツリーノードに入り、そのプレオーダートラバーサルを示すことができるコードを作成しようとしていますが、何が起こるかわかりません。私は何が間違っているのですか?

これは私のコードです:

プレオーダーアクションを呼び出すと、その順序でツリーが印刷されるはずですが、プログラムは単に終了し、何も印刷されません。これに固執してください。助けてください。英語を失礼します。

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

c++ - BFS スパニング ツリーの結果を作成する方法は、事前注文で表示されます

宿題用に BFS アルゴリズムを実装しようとしています。BFS を使用したスパニング ツリー アルゴリズムを見つけました。これが私のソリューションコードです:

この入力の場合:

私のアルゴリズムは出力として[0 1 2 3 4 7 5 6 8 9]を生成します。次の図に示すように、レベルごとのノードを出力して BFS ツリーを表します。

ここに画像の説明を入力

ただし、正しい出力 (順序どおり) は[0 1 3 4 5 6 2 7 8 9]である必要があり、その結果、ツリーは順序どおりに走査されます。コードの解決策が必要です。ツリーを使用する必要がないため、つまり、ツリーを配列 BFS_tree に直接事前注文で格納できるため、コードを修正するにはどうすればよいですか? 私はこれで立ち往生しています。ここで同様の質問を読みましたが、効率対策のためにツリーを実装できず、許可されていません。どうすればこれを行うことができますか? 可能ですか?...英語ですみません。

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

php - 変更されたプレオーダーツリートラベラル-divで囲む

-編集-<li>はおそらくより良いでしょうが、同じ質問がまだ当てはまります。

したがって、データを表示して期待される結果を得ることができる限り、すべてが機能しています。私が持っている表示部分は、 http://www.sitepoint.com/hierarchical-data-database-2/の記事からのものです。

私は持っています:

期待どおりに動作します。私が今やりたいのは、それらをdivで適切に囲むことです。だから私はそれを次のように見せたいです:

したがって、一番上のタイトルdivがそのdivのすべてのサブを囲んでいることがわかります。どうすればいいのかわかりません。私がやりたいことは、count($right)もう一度divの数と同じであることがわかりますが、divを閉じるタイミングですが、どうすればよいかわかりません。

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

php - 変更された予約注文ツリーのトラバーサルでコメントを更新します。行をロックする必要がありますか?

基本的なコメント/返信システムは、事前に修正されたツリー トラバーサルでソートされています。サンプル出力は次のようになります。

などなど。ユーザーがコメントを作成すると、適切な左右の値がすべて更新されます。同時に複数の返信があると、数字がすべて狂ってしまう可能性があると思います. 私はmysqlにあまり詳しくありませんが、行ロックがあることを知っているので、そのような問題は何らかの状況で確実に発生する可能性があります。これがそのような文脈であるかどうかはわかりません。ロックする必要がある場合は、何らかの形式で実行したいと思いSELECT x FROM table FOR UPDATE; UPDATE table SET "the stuff needed setting";ます それとも、更新されるものだけを選択する必要がありますか?

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

php - 変更された事前注文ツリー トラバーサル - 子をスコアで並べ替える

そのため、個々のアイテムのスコアに応じてデータを再配置できるようにしたいことを除いて、データを希望どおりに出力できました。だから今、私は次のようなものを出力します:

左と右の値を配列に入れ、それを反復することでそれを取得します。左の値なら出し、右の値<ol>itemならで閉じる</ol>

上記の例を使用して、私がやりたいことはItem2、スコアが よりも優れている場合Item1Item2が最初になりItem1、そのすべての子がその後になります。subitem1Bのスコアが よりも優れている場合はsubitem1Asubitem1Bsubitem1Aとそのすべての子になります。

出力用の変数にすべてのhtmlを入れるループを実行する前に、DBクエリで何かをする必要があるかどうかはわかりませんが、何らかの方法で出力を確認できるかどうかを考えていました<ol>親の直接の子であるすべて<ol>。したがって、subitem1Aその親を見て、その親が見つかった場合は、parentを持つ人をItem1探し、スコアを確認してから、それに応じて注文します。それが可能かどうかはわかりませんが、それが私の思考プロセスでした。<ol>Item1

編集 - 要求に応じてさらに情報を追加します。

私はこのクエリを行います:

それで:

基本的に、読みにくくするだけの html をいくつか省略しました。スコアは、必要な場所に配置できます。の ID<ol>はスコアでも何でもかまいません。何でもうまくいきます。

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

php - スクリプトからの変更された予約注文ツリーのトラバーサルでの部分的な置換

次のような MPTT (変更された事前注文ツリーのトラバーサル) があります。

ここに画像の説明を入力

ここに画像の説明を入力

( SitePointから取得)

私の実際のツリーには数千のノードとより複雑な構造がありますが、これは単純化して問題を示しています。

この瞬間まで、このツリーを変更する必要があるたびに、次のようなシェル スクリプトを使用していました。

これを実行します(tree.sql):

:複数のサーバーに同じPHPアプリケーションの複数のインストールがあり、これはそれらすべてを更新する簡単/迅速な方法であるため、シェルスクリプトを使用してこれを行いますが、必要に応じて更新をPHPに移動できます)。

しかし現在、要件には次のように記載されています。

  1. Food/Meat ブランチは常に存在します
  2. ユーザーがコンテンツを編集できるようになったため、Food/Meat サブツリーを保持する必要があります
  3. ツリーの他の部分を更新する必要があります (この場合は食品/果物ですが、アプリは構造に依存しません)。

したがって、これを実行できないDROP TABLE場合、ブランチ (食品/肉) を取得し、ツリーの後に挿入する必要があり、DROP TABLE実行CREATE TABLEINSERT TABLEれます。

問題は、シェルからブランチを取得する方法です。もう一度挿入する方法は?(シェルスクリプトから実行できない場合は、2 つの小さな PHP スクリプトを作成できますが、ブランチを取得して再度挿入する方法がわかりません。任意のアイデアを歓迎します)