問題タブ [binary-search-tree]

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 投票する
5 に答える
1653 参照

c - 二分探索木から複数のノードを削除する

C で作成されたバイナリ検索ツリーがあります。問題は、id>5 などのすべてのノードを効率的に削除する方法が見つからないことです。

ツリーをトラバースするときにノードを削除すると、構造が同じではないため、再帰でエラーが発生します。

ツリーからデータを削除する前に、補助スタックを使用してデータを保持する代わりに、方法はありますか?

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

c - BSTの実装

次の二分探索木(BST)の実装の何が問題になっていますか?struct挿入関数の引数として、ノードへのポインタへのポインタを使用する方がよいと言われています。

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

java - このJavaコードが機能しないのはなぜですか?

私はこのコードフラグメントを持っています

insert関数を呼び出すと、insert(5); insert(8);常に出力されroot is nullます。

どうしたの??

0 投票する
6 に答える
12676 参照

c# - C#の二分木と辞書

二分探索木をいつ使用するか、いつ辞書を使用するかという概念に苦労しています。

私のアプリケーションでは、C5ライブラリTreeDictionary(赤黒木であると私は信じています)とC#辞書を使用した小さな実験を行いました。辞書は、追加/検索操作で常に高速であり、また、常により少ないメモリスペースを使用していました。たとえば、16809<int, float>エントリでは、ディクショナリは342 KiBを使用し、ツリーは723KiBを使用しました。

BSTの方がメモリ効率が高いと思いましたが、ツリーの1つのノードには、辞書の1つのエントリよりも多くのバイトが必要なようです。何が得られますか?BSTが辞書よりも優れている点はありますか?

また、副次的な質問として、<int, float>辞書タイプのアクセス用のペアを格納するための、前述の構造のいずれよりも高速でメモリ効率の高いデータ構造があるかどうかを誰かが知っていますか?

0 投票する
5 に答える
594 参照

c++ - C++ コードで BST のすべてのノードを削除できないのはなぜですか?

これは、BST をトラバースし、ルート ノードを含むすべてのノードを削除することになっています。しかし、最後に「ルートにはまだノードが残っています」というメッセージが表示されます。すべてのノードが削除されないのはなぜですか?

0 投票する
5 に答える
34118 参照

c++ - 木の高さを計算する

木の高さを計算しようとしています。私は以下に書かれたコードを使いこなしています。

それは私に正しい結果を与えます。しかし、一部の投稿(googledページ)では、ポストオーダートラバーサルを実行し、この高さメソッドを使用して高さを計算することが提案されました。特定の理由はありますか?

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

binary-search-tree - この擬似コードはどういう意味ですか?-二分探索木後継関数

「ifright[x]!= NIL then return tree-min」の意味を知っており、次のように翻訳しました。

残りは私が理解するのに苦労しています。

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

binary-tree - AVL ツリー内の重複キーの処理

サポートの重複キーを作成したいavl-treeのですが、with duplicates のデフォルトの動作に問題がありbinary search tree、ローテーションによって同じキーを持つノードが親の左右に配置される可能性があります。

たとえば、すべてキー A を持つ 3 つのノードを追加すると、ツリーは次のように回転します。

したがって、そのキーですべてのエントリを取得することは問題になります...そして、双方向の検索は良くありません。

私が考えた解決策は、各ノードに重複の配列を格納することです。そのため、既に存在する新しいアイテムを追加すると、新しいアイテムが配列に追加され、キーでアイテムを削除するとノード全体が削除され、すべてのアイテムが検索されますwith key はその配列を返します。

重複を処理する他の方法はありますか?

挿入項目はキーと値を受け取ります..したがって、特定のキーメソッドを使用してfindAllで値を返すために、値を保存する必要があります。

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

c - 説明は、最後に入力したものだけが出力されます

私はCにまったく慣れていないので、数値と文字列を格納してから出力するバイナリツリーをCに実装しようとしています。

私がこれまでに持っているコードは次のとおりです。

現時点ではints で動作しているようですが、最後に入力した説明部分のみが出力されます。char配列のポインターと関係があると思いますが、うまく機能しませんでした。アイデアやアドバイスはありますか?