問題タブ [tree-traversal]
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.
regex - 正規表現サブマッチの番号付け
正規表現にサブマッチ式の正規の順序はありますか?
例:
"(([0-9]{3}).([0-9]{3}).([0-9]{3}).([0- 9]{3}))\s+([AZ]+)" ?
また
c# - C# でオブジェクトのツリーをたどる
複数のオブジェクトで構成されるツリーがあり、各オブジェクトには名前 ( string
)、ID ( int
)、および場合によっては同じ型の子の配列があります。ツリー全体を調べて、すべての ID と名前を出力するにはどうすればよいですか?
私はプログラミングが初めてで、率直に言って、レベルがいくつあるのかわからないので、これに頭を悩ませています。現在foreach
、ルートの直下にある親オブジェクトを取得するためにループを使用していますが、これは子を取得できないことを意味します。
data-structures - インオーダー ツリー トラバーサル: 正しい定義はどれですか?
二分木(BSTではない)の順序通りのトラバーサル(パンケーキとも呼ばれます)について、少し前に受講した学術コースからの次のテキストがあります。
順序付けされたツリー トラバーサル
木の外側に線を引きます。ルートの左側から始めて、ツリーの外側を一周し、ルートの右側で終了します。できるだけ木に近づきますが、木を横切らないでください。(ツリー — その枝とノード — を堅固な障壁と考えてください。) ノードの順序は、この線がその下を通過する順序です。ノードの「下」に移動するタイミングがわからない場合は、常に「左側」のノードが最初に来ることを覚えておいてください。
使用した例を次に示します (以下のツリーとは少し異なります)。
しかし、Google で検索すると、矛盾する定義が表示されます。たとえば、ウィキペディアの例:
順序付けされたトラバーサル シーケンス: A、B、C、D、E、F、G、H、I (leftchild、rootnode、right node)
しかし、定義#1(の私の理解)によれば、これは
A, B, D, C, E, F, G, I, H
どの定義が正しいか誰でも明確にできますか? どちらも異なるトラバーサル メソッドを記述している可能性がありますが、たまたま同じ名前を使用しています。査読済みの学術論文が間違っているとは信じられませんが、確信は持てません。
c# - C#ラージツリーの反復
親子関係で組み立てられた大きな結果セットがあります。ツリーを歩き、結果をユーザーに表示する必要があります。
再帰を使用する前にこれを実行しましたが、結果セットが大きい可能性があるため、StackOverflowExceptionを受け取る可能性を回避したいと思います。
スタックを使用するMSDNで次の例を見つけました。私が抱えている問題は、スタックが後入れ先出しであるため、データが正しく表示されないことです。次のようにしたいと思います。
しかし、次のようになります。
何か案は?
これが私のコードの例です。に次の列があると仮定しDataTable dt
ます:ID、ParentID、およびText
c - 関数の引数を「再渡す」
私は古典的な C を使用してこのクラスの割り当てを行っていますが、可変引数のカウントと型を取るコールバック関数に関するこの問題に悩まされています。
基本的に、私はハッシュ ツリー (各ノードがハッシュ ツリーであるツリー) に取り組んでおり、さまざまな目的で複数回使用される特定のトラバーサル戦略があるため、それを として実装しましht_walk(HashTree tree, (*callback)(Element e))
た。コールバックとして呼び出される関数は、必要に応じて要素を処理します。
問題は、私の問題のほとんどの状況で、コールバック関数が異なる引数を取る必要があることです。「可変引数」関数 (stdarg、printf-way を使用) を使用して可変引数リストを持つ関数を設計する方法は知っていますが、これらの引数をコールバック関数に「再渡す」方法はわかりません。
具体例を挙げましょう。 というコールバック関数がaddToList(Element e, List list)
あり、 ht_walk 宣言が になったとしますht_walk(HashTree tree, (*callback)(Element e), ...)
。次のスニペットのように ht_walk を使用したいとします。
これを行う方法はありますか?前もって感謝します!
algorithm - 幅優先と深さ優先
ツリー/グラフをトラバースするとき、幅優先と深さ優先の違いは何ですか? コーディングや疑似コードの例はどれも素晴らしいでしょう。
tree - コメントシステムの予約注文トラバーサルを修正
ブログのコメントシステムを作ろうとしています。変更された事前注文トラバーサル システムが動作しています (このガイドを使用: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ )。
ただし、いくつかの問題があります。ガイドが、さまざまなブログ投稿を管理する方法と、返信ではないコメントを追加する方法を説明しているとは思いません。
私のコメントテーブルは次のようになります:
これはこれを管理する良い方法ですか?
コメント テーブルに「blog_post_id」と「root」という列を追加します。ブログ投稿を作成するときは、blog_post_id と root を true に設定してコメント テーブルにエントリを追加します。次に、lft が comment_id で、右が comment_id + 1 です。
ブログ投稿のコメントを読み込むには、lft と rgt WHERE が blog_post_id = x で root = true であることを確認し、lft と rgt の間の blog_post_id が x であるすべてのコメントを選択します...
私はこの方法を思いついたばかりなので、もっと良い方法があるに違いないと確信しています。
ありがとう
performance - 再帰/スタックを使用しないツリートラバーサル (C#)?
私は WPF を使用しており、豊富な機能を備えたツリーなどで構成される複雑なユーザー コントロールを開発しています。この目的のために、WPF で直接実行できない操作があるため、View-Model デザイン パターンを使用しました。そこで、IHierarchyItem (ノードであり、このコンストラクターに渡してツリー構造を作成します) を取得します。
問題は、このコンストラクターに約 3 秒かかることです!! 私のデュアルコアで200アイテム。私は何か間違ったことをしていますか、それとも再帰的なコンストラクター呼び出しは遅いですか? どうもありがとうございました!
algorithm - 訪問済みフラグを保持しない反復的なポスト オーダー トラバーサル
inorder または pre-order 反復トラバーサルではなく、反復ポスト オーダー トラバーサルの Visited フラグを保持する必要があるのはなぜですか。
訪問済みフラグを保持せずにポストオーダートラバーサルを行うことは可能ですか?
c - ランダムな「整数」ツリーの構築 - 深さ優先 / 幅優先
これは、c で再帰関数を作成する初めての試みです。次のコードが機能します。長い投稿で申し訳ありませんが、できるだけ明確にしようとしています。
各ノード (inode) が整数フィールド "n" を持つツリーを生成しようとしています。これに対応して、各 i ノードには、「n」個の他の i ノードへのポインタの配列があります。関数inode *I = gen_tree(inode *I, int nlevels);
は、各レベルで乱数の inode を持つツリーを生成します。ツリーは深さ優先で生成されます。いくつか質問があります。
(a) 関数を書くためのより良い方法はありますか?? フィードバック/提案をいただければ幸いです。
(b) ツリーは BF 形式で生成できますか?
(c)I->i
ツリーがトラバースされるインデックスが必要です。計算する関数を作成するにはどうすればよいI->i
ですか?
(d)I->c
特定のノードの下にあるすべての inode の累積合計が必要です。計算する関数を作成するにはどうすればよいI->c
ですか?
前もって感謝します、
〜ラス