問題タブ [preorder]

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.

0 投票する
1 に答える
664 参照

tree - - 二分木パズル - これらのトラバーサルから木を描く:

順序: SAEUYQRPDFKLM

プレオーダー: FASQYEUPRDKLM

これが私が今まで思いついたものです。

中盤をどうするかかなり悩んでいます。どの組み合わせも機能していないようです。誰にもトリックがありますか?どうすればこれにアプローチできますか? 私はこれに2時間頭を悩ませてきました。

木を元に戻さなければなりません。

0 投票する
3 に答える
2165 参照

c++ - 「ノード」タイプの一時オブジェクトのアドレスを取得する

t.PreorderTraversal(t, &t.getRoot());「ノード」タイプの一時オブジェクトのアドレスを取得中にエラーが発生しました。ルートは Node クラスのオブジェクトです。この関数PreoderTraversalは Node オブジェクトをポイントにするので、Node オブジェクトのアドレスを指定するとエラーが発生しました。それは正しい方法ではありませんか?

0 投票する
0 に答える
173 参照

stack - 再帰なしのスタックを使用した BST 事前注文から事後注文

再帰なしでスタックを使用してポストオーダーを取得する方法は? ジャバがおすすめ!ありがとう!

以下は私の答えですが、2つの隠されたテストケースに合格できませんでした...誰でも助けてくれますか? ありがとう!

0 投票する
3 に答える
569 参照

recursion - ツリートラバーサルの再帰関数を理解するのに問題がある

preorder、inorder、postorder のツリー トラバーサルに関連する再帰関数を理解するのに苦労しています。私は再帰についてある程度の知識を持っています (しかし、確かに私の得意分野ではありません)。全員が最初にルートの左の子と呼び出しを行い、次に右の子と 2 回呼び出しを行うようです。しかし、これはどのように正確に可能ですか?左の子で preOrder 関数を呼び出すと、制御フローが先頭に戻り、次の呼び出しが実行されないのではないでしょうか?

0 投票する
1 に答える
710 参照

tree - リストから二分木を構築する (予約注文)

数日前に出くわした興味深い質問: リストから (ノード ラベル付きの) バイナリ ツリーを構築するエレガントな関数型プログラミング ソリューションはありますか?

結果として得られるツリーは左バランスである必要があります。つまり、ツリー内のノードのすべてのレベルが完全に埋められるか、最下位のノードの場合は左から右に埋められる必要があります。また、ツリーのレベル順トラバーサル (つまり、上から下、左から右) では、元のリストが得られます。

例: リスト 1,2,3,4,5 は次のようになります。

明白な解決策は、リストを配列に変換し、0 番目の値をルートに割り当ててから、再帰的にノードに対して子に値およびnを与えることです。2n+12n+2

しかし、私は疑問に思っていました:補助配列を必要としない、より「機能的な」方法はありますか?

0 投票する
2 に答える
73 参照

binary-search-tree - BSTでの予約注文と「tree_insert」

BST (それを T と呼びます) を持っていて、それに対して PRE-ORDER を実行した場合、予約注文から取得したシーケンスで関数「tree_insert」を実行していることをどのように表示/証明できますか?まったく同じツリーが得られます。 T(私が始めた)バック?

ありがとう、

0 投票する
1 に答える
110 参照

algorithm - 存在しない子が指定された事前注文トラバーサルからの二分木

次のように、事前注文トラバーサルで表されるバイナリ ツリーがあります{1 4 6 10 0 0 0 7 0 8 0 0 2 5 0 0 3 9 0 0 0 }。 0 は、要素の子がないことを示します。

このデータから元のバイナリ ツリーを構築するにはどうすればよいですか? 再帰の問題を解決しようとしましたが、親として葉を持たない限り配列内の位置を計算できないため、ノードの正しい子を処理する方法を理解していません (葉がその後ろに 2 つのゼロがあり、子がないことを示します)。

解決策はかなり簡単でなければならないと思いますが、まだわかりません。

0 投票する
2 に答える
194 参照

algorithm - 単一の子を持つツリー ノードの子を削除する方法

ツリーを事前にトラバーサルするための配列があります (ノードの値は深さの値です)。私がやりたいのは、子が1つしかない内部ノードの子を削除してツリーを最小化することだけです。

例として (最大深さ = 3 のツリー) ここで視覚化された問題

入力配列: [0, 1, 2, 3, 3, 1, 2, 3]
出力配列: [0, 1, 2, 2, 1]

アルゴリズムはどうあるべきですか?

0 投票する
1 に答える
22 参照

binary-search-tree - BST建設の前兆

事前注文トラバーサルの配列から BST を作成しようとしています。次のコードを書きましたが、どこが間違っているのかわかりません。次のコードは、値が null のノードを返します。私は次のアプローチを使用しています:

10 8 4 5 14 12
私はそれを分割します (開始要素を削除した後): 8 4 5 および 14 12, (再帰的に)。