問題タブ [tree-structure]

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

sql-server - データベースにディレクトリ/階層/ツリー構造を格納する方法は?

ディレクトリ/階層/ツリー構造をデータベースに保存するにはどうすればよいですか? つまり、MSSQL サーバーです。

@olavk:あなたが私自身の答えを見たようには見えません。私が使用する方法は、再帰クエリよりも優れています:)

ppsこれが行く方法です!

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

filesystems - 永続性: ディレクトリ ツリーとして保存されたデータ ツリー

永続化のためにメモリ内ツリー構造をディレクトリツリーとして保存することの実用性について疑問に思っていました。私の場合、彼のターゲットファイルシステムは ZFS であり、構造が作成されると、複数のプロセスからまれにアクセスされます。

データ ツリーの永続化メカニズムとしてディレクトリ ツリーを使用することのパフォーマンスは?

0 投票する
11 に答える
31129 参照

sql - ツリー構造用に最適化された SQL

データベースから最高のパフォーマンスでツリー構造のデータを取得するにはどうすればよいでしょうか? たとえば、データベースにフォルダー階層があるとします。folder-database-row には、 IDName、およびParentID列があります。

特別なアルゴリズムを使用してすべてのデータを一度に取得し、データベース呼び出しの量を最小限に抑えてコードで処理しますか?

それとも、データベースへの多くの呼び出しを使用して、データベースから直接構造を取得しますか?

たぶん、データベース行のx量、階層の深さなどに基づいて異なる答えがあるでしょうか?

編集: Microsoft SQL Server を使用していますが、他の観点からの回答も興味深いものです。

0 投票する
7 に答える
6165 参照

java - ツリー構造の正規表現?

ツリー構造の検索と変更に相当する正規表現はありますか? 簡潔なミニ言語 (perl regex など) は、私が探しているものです。

これは、私が探しているものを明確にするかもしれない例です。

上記のツリーで可能な操作は、「ノード 2.1 のサブツリーをノード 1 のサブツリーに移動する」です。操作の結果は次のようになります。

少なくとも 2 つの子を持つすべてのノードを検索する、データが "a" で始まるすべてのノードを検索し、サブツリーに少なくとも 2 つの他の兄弟がある場合はそれを "b" に置き換えるなどの検索および置換操作をサポートする必要があります。

唯一の次元が文字列の長さを横切る文字列の場合、正規表現を使用して上記の操作 (またはそれらの 1D 相当) の多くを実行できます。木に相当するものがあるのだろうか。(単一の正規表現の代わりに、一連の変換ルールを記述する必要があるかもしれませんが、それは問題ありません)。

いくつかの単純なミニ言語があるかどうかを知りたいです(正規表現自体ではなく、ライブラリなどを介して正規表現と同じくらいアクセスできるもの..)。これらの操作を実行するには?できれば、python ライブラリとして。

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

javascript - Javascriptでツリーを配列にパッキングする

わかりましたので、これは難しいことではありませんが、奇妙で奇妙なまぐれに遭遇しました。

ツリーを配列にパックしようとしています。各ノードは次のようなものです。

  • title: 表示文字列
  • キー: ID 値
  • children: 子ノードの配列

まぐれはとても奇妙で、まったく理解できません。ノードに子を追加しようとすると、次のようになります

これは、以前に挿入されたいくつかのノードを削除していました....そのため、デバッグを行ったところ、次のコードが見つかりました:

これはまったく意味がありません-node.children = new Array()は、node.childrenが未定義の場合、何も削除すべきではありません......、そうですか?

私は何か間違ったことをしていますか?もしそうなら、Javascriptでツリーを配列にパックするにはどうすればよいですか?

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

tree-structure - ツリー検索機能

どのノードも、任意の数の子を持つことができます。このツリーを検索するには、次のようなものを書きました

これはうまくいきません...何か入力はありますか?

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

sql - 外部キーを自動参照するツリーのような構造のルート

私のアプリケーションはある種の「仮想フォルダー」を使用しているため、ツリー構造をデータベースに保存する必要があります。データを保持するテーブルは非常に単純で、3 つの列があります。

  • id_folder (整数、主キー)
  • id_parent (整数、id_folder を参照)
  • フォルダー名 (文字列)

私の質問は次のとおりです。ルートを実装する最良の方法はどれですか?

  1. id_parent を null 可能にします。ルートは id_parent=null のフォルダーになります。または
  2. フォルダーをそれ自体の親にする (つまり、id_folder=id_parent)。

ありがとうございました。

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

jquery - jquery $.post 呼び出しで返されたデータに対して jquery 呼び出しを実行する方法

jqueryを使用して、jquery treeTableプラグインを使用してhtmlテーブルをファイル構造に変換するページがあります.htmlテーブルは「treeStructure」と呼ばれるdivにあります

ツリー内の任意のフォルダーに新しいフォルダーを追加する機能があり、post 呼び出しを使用して新しいフォルダーをデータベースに追加します。投稿は、フォルダーが追加された新しい html テーブルを返し、「treeStructure」div の内容を返されたデータに置き換えます。次に、jquery を使用して、ページを更新せずに、( $document.ready() で行ったように)そのテーブルをファイル構造に再度変換したいと考えています。

Jquery の .live() 機能を使用する必要があると思いますが、これを行う方法がわかりません。

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

php - PHPを使用して効率的なフレンドリストを作成する

ソーシャルネットワークの要素をいくつか備えたウェブサイトを構築したいと思います。

だから私は友達リストを保存する効率的な方法を考えようとしてきました(Facebookのようなものです)。

そして、少し検索した後、私が出くわした唯一の提案は、友情を示す2つの「ID」を持つ「テーブル」を作成することです。

これは小さなWebサイトでは機能するかもしれませんが、少し効率的ではないようです。

私はJavaのバックグラウンドを持っていますが、PHPに精通していません。

かなりうまくいくと思うアイデアが頭に浮かびました。問題は、それをどのように実装するかわからないことです。

アイデアは、友達のすべての「ID」をツリーデータ構造に保存することです。そのツリーの各ノードは、友達のIDから1桁の数字に似ています。

最初に1つのノードから開始し、次にユーザーが友達を追加するときにノードを追加します。(Lempel–Zivに少し似ています)。

すべてのノードは、0から9およびXの11個の他のノードを指すことができます。

「X」はIDの終わりを示します。

たとえば、次のツリーを参照してください。

このツリーでは、ユーザーには次の「id」を持つ4人の友達がいます。

  • 0
  • 143
  • 1436
  • 15

更新:以前は不明確だったかもしれませんが、すべてのユーザーが多次元配列の形式のツリーを持ち、ポインター自体の存在が友人の「ID」を示すという考え方です。

すべてのユーザーがそのような多次元配列を持っている場合、id "y"が私の友達かどうかを検索したり、友達リストからid "y"を削除したり、友達リストにid "y"を追加したりすると、すべて一定の時間が必要になります。ウェブサイトのユーザー数に依存しているので、欠点は、そのような巨大な配列を取得し、それをシリアル化してテーブルの各行にプッシュすることは正しくないようです。

-これを実装することも可能ですか?

-シリアル化を使用してそのツリーをテーブルに挿入することは実用的でしょうか?

-これを行うためのより良い方法はありますか?

私がこれを選んだ利点は、IDの数が非常に多い場合(数百万または数十億)でも、検索、追加、削除の時間が線形であるということです(桁数によって異なります)。

これを実装する際の助け、またはこの方法を改善または変更するための代替方法の提案をいただければ幸いです。

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

sql - ツリー データをデータベースに格納するためのベスト プラクティス

問題の古典的な形は、従業員がいて、従業員にはマネージャーがいて、マネージャーが CEO でない限りマネージャーがいるというものだと思います。

では、どのようにデータを保存しますか?解決策 1: 従業員テーブルに manager_id を含めるか、employee_manager テーブルを含めることができるように思われます (そのようにして、多数のマネージャまたはゼロ マネージャを使用できます)。

SQL は再帰をサポートしておらず、従業員の上にいるすべてのマネージャーを検索するクエリがないため、解決策 1 は悪い考えだと言う人もいます。これらの人々は別のアイデアを持っています (従業員がマネージャーのリストを持っているなど) が、それらはすべて、維持するのが非常に難しい正規化されていないデータの混乱を含んでいるようです。

それで、皆さんはどう思いますか?