問題タブ [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.
javascript - javascript でツリー トラバース メソッドを使用してオブジェクトを拡張する
同じタイプのオブジェクトが格納される配列 (「子」と呼ばれる) を含むカスタム オブジェクトがあり、結果としてツリーが作成されます。
それが次のように見えるとしましょう:
ここで、このオブジェクトに「forAll」メソッドを追加して、引数として提供された別の関数を、そのツリーのすべての要素に対して深さ優先方式で実行したいと考えています。それを行う最良の方法は何ですか?
tree - ツリートラバーサルの時間計算量はどれくらいですか?
ツリートラバーサルの時間計算量はどれくらいですか、それは明らかであるに違いないと確信していますが、私の貧しい脳は今それを解決することができません。
php - PHPの注意:未定義のオフセット:-1、whileループおよびPHP致命的なエラー:メモリ不足
さて、タイトル通り、そういうことで困っています。この問題は、X行が原因で発生しています。これはSitePointのツリートラバーサルのwhile ($right[count($right)-1]<$row['rgt']) {
関数display_treeにあります。
この関数はうまく機能していましたが、なぜ突然この致命的なエラーが発生し始めたのかわかりません。
を使用してエラーの原因を理解しようとしerror_reporting(-1);
ましたが、新しいエラーログには、PHP通知が未完了のループのように、メモリ不足エラーが発生するまで何度も表示されていることが示されています。
奇妙なことに、これは2日前まで完全に機能していました。なぜなら、問題の原因を解読するために髪の毛を抜いていたからです。
問題の原因を正確に理解する方法はありますか?または他の役立つヒントがありますか?
条件内のwhileループは次のとおりです。
みんなありがとう。
c++ - Fastest way to traverse arbitary depth tree for deletion?
For my own exercises I'm writing an XML-parser. To fill the tree I use a normal std::stack
and push the current node on top after making it a child of the last top-node (should be depth-first?). So I now do the same for deletion of the nodes, and I want to know if there's a faster way.
Current code for deletion:
Works totally fine but it kinda looks slow. So is there any faster / better / more common way to do this?
algorithm - 下から上へのグラフ反復アルゴリズム?
この依存関係グラフを考えると、下から上に反復するための「良い」アプローチは何ですか?
各「サイクル」の期待される結果は次のとおりです。
ブレーンストーミング
「深さ優先検索」が機能しない理由:
アルゴリズム
私は本当に車輪の再発明をしたくありません.この問題を解決するアルゴリズムはすでにありますか、それとも「賢い」アプローチを持っている人はいますか?
ruby - ツリー構造内のすべてのリーフノードからルートへのパスを取得します
このツリー構造をどのように変えることができますか
....基本的にすべてのリーフノードから1(ルート)へのパスを含むこの「逆ツリー」構造に:
結果はツリーとして構造化する必要はなく、正しい順序の4つのフラット配列でも問題ありません。
深さ優先探索が関連するアルゴリズムのように見えますが、擬似コード(incidentEdges()は何を返すのですか?)を理解できないため、かなり行き詰まっています。
誰かが元のネストされた配列を結果の配列に変換するためのRubyメソッド(または本当に理解しやすい擬似コード)を提供できれば、私は無限に感謝します。
そして、これは宿題ではなく、勉強してから長すぎる結果です...課題追跡システムで特定の課題の依存関係ツリーを適切な順序で印刷するには、これが必要です。
c++ - 二分探索木 PostOrder と PreOrder Traversal が間違っている
私はこの宿題に取り組んでおり、二分探索木を前順、後順、および順番に印刷する必要があります。ただし、私の inorder メソッドだけが機能しているようです。次のテスト ケースを使用して作業を確認しました。
以下の私のコードを見て、私が間違っていることを確認できますか。任意のヘルプ/オリエンテーションをいただければ幸いです。私のためにそれを解決する必要はありません。私が間違っていることを教えてください。ありがとう。
java - 一定のスペースと O(n) ランタイムを使用して、二分探索木の非再帰的トラバーサルを記述します
これは宿題ではなく、面接の質問です。
ここでの問題は、アルゴリズムが定数空間でなければならないことです。スタックなしでこれを行う方法についてはまったくわかりません。スタックを使用して書いたものを投稿しますが、とにかく関係ありません。
私が試したことは次のとおりです。事前注文トラバーサルを実行しようとしましたが、一番左のノードに到達しましたが、そこで立ち往生しています。スタック/親ポインターなしでバックアップを「再帰」する方法がわかりません。
どんな助けでも大歓迎です。
(Java は私が快適に使用できるものなので、Java としてタグ付けしていますが、明らかなように、言語にかなり依存しています。)
c++ - スタックまたは再帰を使用しないモリス順ツリー走査を説明する
スタックや再帰を使用せずに、次のモリス順序ツリートラバーサルアルゴリズムを理解するのを手伝ってもらえますか? 私はそれがどのように機能するかを理解しようとしていましたが、それは私を逃れているだけです.
ツリーが変更され、 がのに変更されることを理解しておりcurrent node
、このプロパティを順不同のトラバーサルに使用しています。しかし、それを超えて、私は迷っています。right child
max node
right subtree
編集: この付随する c++ コードが見つかりました。変更後にツリーがどのように復元されるかを理解するのに苦労しました。魔法はelse
節にあり、右の葉が変更されるとヒットします。詳細については、コードを参照してください。