VBSで便利なプログラムを作れスレ 2 (853レス)
VBSで便利なプログラムを作れスレ 2 http://mevius.5ch.net/test/read.cgi/tech/1539439008/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
321: ピッコロ ◆YAZTByPXwc6o [] 2019/02/19(火) 23:10:02.49 ID:hrS7nHTV ところでご質問させていただきたく https://light.dotup.org/uploda/light.dotup.org575301.png このような二分木があった場合に ノードをたどって1 2 3 4 5 6 7という 順番に値を出力したく、これを再帰を使わずに実装したく どのように実装すればよいでしょうか 皆様のお知恵を拝借したく 教えていただきたく よろしくお願いします http://mevius.5ch.net/test/read.cgi/tech/1539439008/321
326: デフォルトの名無しさん [] 2019/02/19(火) 23:16:59.63 ID:T0Xa9ami >>321 ピラフの命の輝きを見よ!! https://gist.github.com/kingpilaf/ https://gist.github.com/sleeping-marple/ https://gist.github.com/MistyBloom/ _,l;;;;;;;;;;;;;l,,_ ,.r'´;: 八 '::..゙ヽ ,.'___ _立_ __;;ミ゙;、 フT l厄巳厄 i王i ,.巳厄巳l 夕 ヒ ,.-'l i,.:' ヽ:.、 ;.:' ' ヽ |,.、 /{´iY´ヾーtッ-ヽ'' kーtr-,'´lri _l_ {_i,入::.. ` ̄ ̄,'i!ヽ;` ̄´ ゙::.}rリ i,_ ヽ_ノiヾ ;:. _ i': ll!:,ィ ._ .: j,ノ ッジ::;;| ,r'´;;:> ̄弋´;;::ヽ;r1:゙'イィ ┬‐宀 弍::::::::l i':;r'´ ,.-ーー-、.ヾ;:;i. |:::::::ス ノ□隹 彡;:::l l::l ' ---;:, ゙ l::l |::;;ャ` 、 ,r',广ヽl::l ::. .: ゙:. l:lノ^i`、 三刃 ,イ(:::j i::iヽ :. .: /l:l'" l:ヽヽ 口心 |;:;.\\ l::l ', :;:::..::. / l:l,r''/;::;;| http://mevius.5ch.net/test/read.cgi/tech/1539439008/326
333: デフォルトの名無しさん [sage] 2019/02/20(水) 02:40:36.02 ID:B2QSVSiS >>321 すべてのノードについて、左の子以下の数は、自分の数よりも小さく、 右の子以下の数は、自分の数よりも大きくなる これは普通の2分探索木で、 C++ のSTL にある、map・set というコンテナだろ でも皆、再帰を使って実装しているのでは? 再帰を使わない方法は、思いつかない http://mevius.5ch.net/test/read.cgi/tech/1539439008/333
346: 333 [sage] 2019/02/20(水) 23:54:30.57 ID:B2QSVSiS 二分木 https://ja.wikipedia.org/wiki/%E4%BA%8C%E5%88%86%E6%9C%A8 行きがけ順、通りがけ順、帰りがけ順探索[編集] 二分木においてはあるノードとその子孫もまた二分木を構成する。これを部分木と呼ぶ。 従って二分木を部分木に分け、再帰を用いて探索する方法は自然である。 根を調べてからそれにぶらさがる部分木を調べるのが行きがけ順 (preorder)、 部分木を調べてからその根を調べるのが帰りがけ順 (postorder) 、 片方の部分木を調べ、根を調べ、次いで反対の部分木を調べるのが通りがけ順 (in-order) である。 二分探索木では通りがけ順探索は、ノードを大きさ順(あるいは大きさの逆順)に調べることになる。 >>321 は、通りがけ順でしょ ところで、ピラフ大王は、ピッコロ大魔王になったのですか? http://mevius.5ch.net/test/read.cgi/tech/1539439008/346
354: 333 [sage] 2019/02/21(木) 08:40:37.72 ID:JBRYA9bz 順位キュー(優先度付きキュー、priority queue)は、ダイクストラ・A* で使っている。 確か、2分ヒープと同じで、最小値だけがtop に来る。 他のノードの関係は、保証されないのだったかな? >>321 の図で説明すると、 まず、4に来るとキューに、[4, 2, 6] を追加すると、[2, 4, 6]となる 削除しないで、peek だけすると、最小は2なので、2へ行き、[1, 3] を追加すると、[1, 2, 4, 6, 3]となる そこでpeekすると、最小は1なので、1へ行き、追加するものはないので、 1をpop して、peekすると、最小は2なので、2へ戻り、 2をpopして、peekすると、最小は3なので、3へ行き、追加するものはないので、 3をpopして、peekすると、最小は4なので、4へ戻り、追加するものはないので、 4をpopして、peekすると、最小は6なので、6へ行き、[5, 7] を追加すると、[5, 6, 7]となる そこでpeekすると、最小は5なので、5へ行き、追加するものはないので、 5をpopして、peekすると、最小は6なので、6へ戻り、 6をpopして、peekすると、最小は7なので、7へ行き、追加するものはないので、 7をpopすると、キューが空 プログラミング・コンテスト・チャレンジブック、第2版、2012 言語は、C++で、ほとんど全てのアルゴリズムを網羅。 問題数も多く、パズル感覚で楽しめる。 AIやシミュレーションゲームの参考になる http://mevius.5ch.net/test/read.cgi/tech/1539439008/354
359: 333 [sage] 2019/02/22(金) 06:28:37.54 ID:43iXBVf1 順位キューではなく、スタックで考えてみた >>321 の図で説明すると、 まず、4に来ると、スタックに大きい方から、[6, 4, 2] をpush する 削除しないで、末尾をpeek だけすると、最小は2なので、2へ行き、 一旦、2をpop してから、[3, 2, 1] をpushすると、[6, 4, 3, 2, 1]となる。 (一旦、2をpopして、順番を変えるのがミソ) そこでpeekすると、最小は1なので、1へ行き、追加するものはないので、 1をpop して、peekすると、最小は2なので、2へ戻り、 2をpopして、peekすると、最小は3なので、3へ行き、追加するものはないので、 3をpopして、peekすると、最小は4なので、4へ戻り、追加するものはないので、 4をpopして、peekすると、最小は6なので、6へ行き、 一旦、6をpop してから、[7, 6, 5] をpushすると、[7, 6, 5]となる そこでpeekすると、最小は5なので、5へ行き、追加するものはないので、 5をpopして、peekすると、最小は6なので、6へ戻り、 6をpopして、peekすると、最小は7なので、7へ行き、追加するものはないので、 7をpopすると、スタックが空 http://mevius.5ch.net/test/read.cgi/tech/1539439008/359
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.034s