問題タブ [non-recursive]
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.
java - 非再帰的な事前注文トラバーサル メソッドの実装
事前注文トラバーサル メソッドを実装する必要があります。ノードのバイナリ ツリーのトラバース。
以下の問題の解決策を見つけようとしています。私はそのような方法を実装する方法を知っていますが、問題は、先生から与えられた規則から逸脱できないことです。これにより、この演習はかなり難しくなります。
これらはルールです:
- 先生は再帰の使用を禁止した
- スタックを使用する必要があります
- ルート ノードから開始
他の制限については、コード内のコメントを参照してください。
/li>
誰かがこの問題で私を助けてくれることを願っています。
java - 二分探索木の追加と順序付けの方法を修正するのに助けが必要
これら2つのメソッド( add() と inOrder() )を実装する必要がある割り当てに取り組んでいます。
以下のコードは、私がこれまでに持っているものです。私が助けを必要としているのは、コードが機能するように調整することです。現在、それは私が望んでいることをしません。
add() はツリーに最大 3 つのレベルを追加するだけで、その後は 3 番目のレベルのノードを変更するだけです。3 レベルを超えるコードの書き方がわかりません。
inOrder() は機能しません。実行すると、停止して何も出力せず、強制的に実行を停止します。
さらに情報が必要な場合はお知らせください。
追加():
順番に():
c++ - バイナリ ツリーの最大パス合計、非再帰、制限時間の超過
非再帰的な方法で解決したいこの問題に苦しんでいます。アルゴリズムに論理エラーはないようで、73% のテスト ケースがパスしました。しかし、ビッグデータを処理できず、「時間制限を超えました」と報告されました。誰かが非再帰的にそれを行い、時間制限を超えないようにする方法を教えていただければ幸いです。よろしくお願いします!
問題のリンク
LeetCodeにも同様のものがあると思います。
http://www.lintcode.com/en/problem/binary-tree-maximum-path-sum-ii/
問題の説明:
与えられた二分木で、ルートからの最大パス合計を見つけます。パスは、ツリー内の任意のノードで終了し、その中に少なくとも 1 つのノードを含むことができます。
例:
以下の二分木を考えると:
1
/ \
2 3
4 を返す (1->3)
ジャッジ
制限時間超過
合計ランタイム: 1030 ミリ秒
入力 入力データ
{-790,-726,970,696,-266,-545,830,-866,669,-488,-122,260,116,521,-866,-480,-573,-926,88,733,#,#,483,-935,-285,-258,892,180,279 ,-935,675,2,596,5,50,830,-607,-212,663,25,-840,#,#,-333,754,#,817,842,-220,-269,9,-862,-78,-473,643,536,- 142,773,485,262,360,702,-661,244,-96,#,519,566,-893,-599,126,-314,160,358,159,#,#,-237,-522,-327,310,-506,462,-705,818,-782,390,-782,39 193,-205,-92,795,-99,-983,-658,-114,-706,987,292,#,234,-406,-993,-863,859,875,383,-729,-748,-258,329,431,-188,-375 ,-696,-856,825,-154,-398,-917,-70,105,819,-264,993,207,21,-102,50,569,-824,-604,895,-564,-361,110,-965,-11,557,#,202,213 ,-141,759,214,207,135,329,15,#,#,244,#,334,628,509,627,-737,-33,-339,-985,349,267,-505,-527,882,-352,-357,-630,782,-215,-213,-555,1 835,-421,751,0,-792,-575,-615,-690,718,248,882,-606,-53,157,750,862,#,940,160,47,-347,-101,-947,739,894,#,-658,-90,-277 ,-925,997,862,-481,-83,708,706,686,-542,485,517,-922,978,-464,-923,710,-691,168,-607,-888,-439,499,794,-601,435,-114,-337,422,#,-8,-895 224,902,#,577,#,-386,272,-9 ...
期待される
6678
私のコード C++
解決した
@Dave Galvin のアドバイスを受け入れて、うまくいきました! コードは次のとおりです。
c++ - この検索機能を非再帰的にするにはどうすればよいですか?
この再帰関数を非再帰関数に変えようとしています。これは二分探索木からの検索関数です。再帰的にするのは当然だと思いますが、学習のために非再帰的にしたいと思います。どうすればこれを行うことができますか?前もって感謝します!
c++ - 「検索」の再帰バージョンと非再帰バージョンの違いは何ですか?
本Accelerated C++ Programmingの 205 ページには、次の 2 つの実装があります。find
次の 2 つの実装のパフォーマンスの違い (実際にコンパイル後に同じかどうか) を知りたいです。
非再帰的
再帰的な
Kerrek によって提案された Compiler Explorer を使用して、次の結果を得ました。
非再帰https://godbolt.org/g/waKUF2
再帰的なhttps://godbolt.org/g/VKNnYZ
コンパイル後はまったく同じようですか?(ツールを正しく使用すれば..申し訳ありませんが、私はC ++に非常に慣れていません)
makefile - 非再帰的なメイク
再帰的な make から非再帰的な make に変換したいプロジェクトがあります。構造は次のようになります
私がやろうとしているのは、ビルドがこのような構造になった後です
主な考え方は、ビルド フォルダーにはすべてのオブジェクト ファイルと依存関係ファイルが含まれ、ターゲットにはロードする必要があるプログラム ファイルがあるということです。
私が抱えている問題は、make がこの構造を作成したくないということです。ルールを定義すると、make は暗黙のルールのみを実行し、定義したルールは実行しません。
非再帰的な make のすべてのリソースを読みましたが、まだクリックしていません。どんな助けでも大歓迎です。