問題タブ [inorder]
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++ - 二分木: 反復的な順不同印刷
私は組み込みのインオーダー トラバーサル (ネストされたを使用) を使用して、赤黒ツリーの実装を作成しましたclass Iterator
。
順序トラバーサルを使用してバイナリ ツリーをグラフィカルに出力する (可能であれば反復的な) アルゴリズムを探しています。
印刷方向は関係ありません。つまり、コマンドライン出力のツリーは、次のように方向付け (フォーマット) できます。
またはこのように:
または上下逆さまでも構いませんが、以下に示す方法を使用して、インオーダー トラバーサルを使用してツリーを出力する必要があります。
可能なので、次のようにします。
これは元のコードです:
私は同様の質問で回答を調査しましたが、どのアルゴリズムも順序通りのトラバーサルを利用していません (そしてそれらのほとんどは再帰的です)。
編集:
@nonsensickle のアドバイスに従って、コードは最小限に切り詰められています。
java - 二分木のための順不同イテレータ - Java
これが私のNodeクラスです:
.. 等々。
これは、 next() および hasNext() メソッドを使用した順不同イテレータです。
問題は、左側のサブツリーの左側のノードのみを出力することです。たとえば、ルート ノード 17、左ノード 15、右ノード 19 を持つツリーの場合、15 のみが出力されます。
したがって、右サブツリーには入りません。
問題はそのelse while (true)
部分にあると思いますが、これを修正する方法がわかりません。
tree - ツリー トラバーサル inorder LISP
順番にアクセスされたツリー(必ずしもバイナリツリーではない)のノードのリストを返そうとしています。
ツリーは、サブリストを含むリストとして表されます。たとえば、(a (b) (c (d) (e)))、b - 左サブツリー、(c (d) (e)) - 右サブツリー、a -根。結果は次のようになります: b,a,d,c,e
これは私のコードですが、常に「スタック オーバーフロー」エラーが発生するようです。誰か助けてくれませんか?
c++ - 非再帰的な inorder メソッドで二分木をたどることはできません
キーボードからの入力データで構築されたバイナリ ツリーをトラバースしようとしています。二分木にデータが正常に挿入されました。私は switch ステートメントを持っています。'case 3' は、非再帰的な Inorder トラバーサル アルゴリズムを使用してバイナリ ツリーをトラバース (および出力) する必要があります。ただし、「ケース 3」が呼び出されると、EXC_BAD_ACCESS エラーが発生しますが、これはまったく意味がありません。誰かがこれで私を助けてくれたら、私はもっとうれしいです.
(RootPtr は、グローバルに定義されたバイナリ ツリーの最上位のレベル 0 ノードです。GetNodeS は、基本的に StackPtr 型ポインタの初期化関数 (malloc を使用) です。)
よろしくお願いします。
関連するコードは次のとおりです。
これらは構造体定義です。
これらはプッシュ機能とポップ機能です。
これがトラバース機能で、
これは、反復トラバース関数を呼び出そうとする switch ケースです。
c - insert_node 関数がルートを消去するのはなぜですか? (ハ)
メンバー文字列を持つノードを BST に挿入し、その BST に関する情報 (高さ、順序通りのトラバーサル、葉の数など) を出力するプログラムを作成しようとしています...
現時点では、順不同のトラバーサルを行うと、ツリーの最下部にあるはずであっても、最後に入力された文字列がルートとして出力されます。
コードは次のとおりです。
挿入機能:
順序トラバーサル関数:
それらがどのように使用されているか:
入力は次のようになります。
したがって、出力(順序どおりのトラバーサルを行う場合)は次のようになります。
しかし、代わりに次のとおりです。
python-3.x - ツリートラバーサル python
preorder(t):
、postorder(t):
、 の3 つの関数を定義する必要がありinorder(t):
ます。
各関数は二分木を入力として取り、リストを返します。次に、リストは、ツリー要素がそれぞれのトラバーサルでアクセスされるのと同じ方法で並べられる必要があります (ポストオーダー、プリオーダー、またはインオーダー)。
それぞれのコードを書きましたが、別の関数 ( flat_list()
) を呼び出すとエラーが発生し続け、インデックス エラーがスローされます。
私のトラバーサル メソッドのコードは次のとおりです。
これは私が flat_list2 を呼び出す方法です
haskell - バイナリ ツリーの順序どおりのトラバーサルのこの実装を改善できますか?
toList1
二分木用の単純な順序走査関数 ( ) を作成しました。ただし、その複雑さ(メモリ/時間)が心配です。それを実装するより良い方法はありますか?
binary-tree - 二分探索木探索
バイナリ ツリーの学習を始めたばかりで、C で自分自身を実装しようとしました。他の 2 つが間違っているのに、InOrder Traversal だけが正しく表示される理由がちょっとわかりません。私は本当にこれを理解することはできません。ノードを直接挿入してみましたが、結果は同じです。
これが間違っているのか、それともトラバーサルの理解が間違っているのかを理解するのを手伝ってください。出力は次のとおりです。 出力端子
c++ - 二分探索木を順番に出力
望ましい動作
次のように、追加のタブを付けて BST の各レベルを出力します。
実際の動作
これが私の現在のコードです。どこが間違っているのかわかりません。
java - 二分探索木の追加と順序付けの方法を修正するのに助けが必要
これら2つのメソッド( add() と inOrder() )を実装する必要がある割り当てに取り組んでいます。
以下のコードは、私がこれまでに持っているものです。私が助けを必要としているのは、コードが機能するように調整することです。現在、それは私が望んでいることをしません。
add() はツリーに最大 3 つのレベルを追加するだけで、その後は 3 番目のレベルのノードを変更するだけです。3 レベルを超えるコードの書き方がわかりません。
inOrder() は機能しません。実行すると、停止して何も出力せず、強制的に実行を停止します。
さらに情報が必要な場合はお知らせください。
追加():
順番に():