問題タブ [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.
c# - どのように実装しますか?: C# のツリーに対する多くのルール
次のような C# コードを表すデータ構造があります。
...単純なレクサー/パーサーの組み合わせを使用して構築しています。ツリーをトラバースして、大量のルール セット (3000 以上) を適用する必要があります。ツリー内でさまざまな (そして非常に複雑な) パターンに遭遇すると、ルールが実行されます。たとえば、クラスが同じアセンブリ内のインターフェイスのみを実装する場合に実行されるルールがあります。
私の最初の素朴な実装は、各ルールを反復し、次に各ルールがツリーを走査して特定のパターンを探します。もちろん、ソースコードが少量であっても、これにはかなりの時間がかかります。
これは、大量のバイナリ コードの複雑なパターンを認識して、ウイルス対策ソフトウェアがどのように機能するかにたとえることができると思います。
この種のソフトウェアをどのように実装することをお勧めしますか?
EDT: 追加したい: いいえ、FxCop を再実装していません。
ありがとう
c# - 親子を管理するC#でツリーを実装する
私はツリーをフォルダ構造と考えて実装しているので、次のようなクラスがあります。
今私が望むのは、ツリーを上下に移動できるようにすることです。これにより、ルートが与えられれば葉を見つけることができ、葉が与えられればルートノードを見つけることができます。したがって、子供にはそれぞれ親が必要です。問題は、新しいノードをツリーに追加する最良の方法は何かということです。過去に2つのソリューションを使用しました。
- フォルダーの追加を処理し、親を設定できる AddChild(Folder) メソッドを Folder に追加します。これに関する問題は、このメソッドをバイパスできないように、 Children コレクションをロックする必要があることです。
- インスタンスへの参照が与えられる独自の Children コレクションを作成して、追加時に親の設定を処理できるようにします。これに関する問題は、新しいコレクションを実装する必要があります。
- アイテムが追加または削除されたときにイベントを持つコレクションを使用します。
人々が一般的にどのようなパターンを使用しているか、そして私の特定のユースケースについて何か提案があるかどうかに興味があります。nHibernate を使用してツリーを SQL サーバーに永続化しています。アプリケーションの非常に小さな部分である何かに対してこれを機能させるには多くのコードがあるため、カスタムコレクションを実装したくありません。
c# - C# でオブジェクトのツリーをたどる
複数のオブジェクトで構成されるツリーがあり、各オブジェクトには名前 ( string
)、ID ( int
)、および場合によっては同じ型の子の配列があります。ツリー全体を調べて、すべての ID と名前を出力するにはどうすればよいですか?
私はプログラミングが初めてで、率直に言って、レベルがいくつあるのかわからないので、これに頭を悩ませています。現在foreach
、ルートの直下にある親オブジェクトを取得するためにループを使用していますが、これは子を取得できないことを意味します。
algorithm - 平らな構造から効率的に木を作る方法は?
平らな構造のオブジェクトがたくさんあります。これらのオブジェクトにはID
とParentID
プロパティがあるため、ツリーに配置できます。それらは特定の順序ではありません。各ParentID
プロパティは、必ずしもID
構造内のと一致するとは限りません。したがって、それらはこれらのオブジェクトから出現するいくつかの木である可能性があります。
これらのオブジェクトをどのように処理して、結果のツリーを作成しますか?
私は解決策からそれほど遠くはありませんが、それは最適とはほど遠いことを確信しています...
これらのツリーを作成して、データを適切な順序でデータベースに挿入する必要があります。
循環参照はありません。ParentID == nullの場合、またはParentIDが他のオブジェクトで見つからない場合、ノードはRootNodeです。
image - 大量の画像を保存する
大量の写真 (おそらく数万枚) を保存するために、独自の PHP ベースのギャラリーを開発することを考えています。
データベースで画像の URL を指定しますが、ここに問題があります。クロールへのアクセスが遅くなるため、すべての画像をサーバー内の同じディレクトリに配置するのは現実的ではないことがわかっています。それらすべてを保存しますか?jpeg/png の名前に基づいたある種のツリーですか?
画像を分割するためのどのルールをお勧めしますか?
(安っぽいドットコムでの使用に焦点を当てているので、サーバーとの混乱はありません)
svn - Linux で、Subversion のどのツールに、ブランチ履歴を参照するためのツリー ビュー (Cervisia など) がありますか?
私の会社は CVS から SVN に移行しています。CVS を使用して、各製品リリース (現在は svn コピー) ごとにブランチを作成し、重大な問題についてブランチに限定的なパッチを適用しました。ブランチ履歴のツリー ビューには Cervisia を使用しました。SVN の同様のツリーを表示する Linux の GUI ツールはありますか?
apache-flex - Flex Treeコントロールをデータベースに保存されているツリーに関連付ける最良の方法は何ですか?
ツリーを含むローカルSQLiteデータベースがあります(ネストされたセットとして)。AIRアプリケーションでは、そのツリーをツリーコントロールに表示し、ノードの名前を変更したり、ノードをコピー、移動、追加、または削除したりする手段を提供したいと思います。
今、私はどのコードをどこに置くかについて少し悩んでいます。明らかに、データベースに対してロード/更新/挿入/削除などの操作を実行するクラスがあります。これにより、ツリー全体がいくつかのストレージ変数にロードされ、ユーザーが行った変更がデータベースに保存されます。
このクラスは、dataProvider、dataDescriptor、またはTreeコントロール自体の拡張である必要がありますか?また、ユーザーがノードの追加などの操作を要求した場合、dataProviderを更新してデータベースハンドラーにイベントに反応させる必要がありますか、それともデータベースハンドラーのメソッドを呼び出してからdataProviderを更新する必要がありますか?dbクエリで問題が発生した場合にツリーのデータを更新しない方が簡単なので、後者の方が優れていると思います。
DefaultDataDescriptorとTreeクラス(後者では保護されたメソッド)にノードを追加および削除するメソッドがありますが、それらを使用/拡張するか、無視する必要がありますか?
これについて私が混乱している理由は、ドキュメントによると、Treeコントロールは'dataDescriptor'プロパティに格納されているオブジェクトを使用して、'dataProvider'プロパティ内に格納されている実際のデータを解析および操作するためです。
これは、サブクラス化しない限り、データを操作するのはツリーコントロールではなく(ドラッグアンドドロップが有効になっている場合を除く)、dataDescriptorでもないことに気付くまでは理にかなっているようです。むしろ、すべての例で、データの操作はdataProviderオブジェクトを介して直接行われ、Treeコントロールのイベントハンドラーをトリガーします。
ここに来ないのは何ですか?
c++ - 「ヘッドファースト」スタイルのデータ構造とアルゴリズムの本?
オブジェクト指向デザインに関するHeadFirstシリーズの本が大好きでした。それは主題への非常に穏やかで面白い紹介でした。私は現在データ構造クラスを受講していますが、使用しているテキスト(Kruse /Rybaデータ構造とC++のプログラム設計)は非常に乾燥していて理解しにくいと感じています。これは主に、数学の分野での私自身の限界によるものだと思います。
ユーモアのセンスのある、より明るいスタイルで書かれ、バイナリツリー、Bツリー、グラフなどのすべての基本をカバーするデータ構造テキストを知っている人はいますか?
sql - 再帰SQLクエリでサブツリー内のすべてのノードを見つける方法は?
ノード間の子と親の関係を定義するテーブルがあります。
parentID
常に有効な既存のノードを指している場合、これは当然ツリー構造を定義します。
その場合、ノードはルートノードでparentID
あるNULL
と見なすことができます。
どのように私は:
- 特定のノードの子孫であるすべてのノードを検索しますか?
- 特定の深さまでの特定のノードの下にあるすべてのノードを検索しますか?
これらのそれぞれを単一のSQL(必然的に再帰的であると思います)または2つの相互再帰クエリとして実行したいと思います。
これはODBCコンテキストで行っているため、ベンダー固有の機能に依存することはできません。
編集
- テーブルはまだ作成されていないため、列/テーブルを追加することはまったく問題ありません。
- ツリーは潜在的に更新され、頻繁に追加されます。補助的なデータ構造/テーブル/列は可能ですが、最新の状態に保つ必要があります。この種の質問のために手が届く魔法の本があれば、私は知りたいです。
どうもありがとう。