問題タブ [binary-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 投票する
7 に答える
10540 参照

recursion - 二分木を作成するための再帰的アルゴリズムの反復バージョン

このアルゴリズムを前提として、反復バージョンが存在するかどうかを知りたいと思います。また、反復バージョンの方が高速であるかどうかを知りたいです。

このある種の疑似Python...

アルゴリズムはツリーのルートへの参照を返します

0 投票する
7 に答える
72954 参照

algorithm - スキップ リストと二分探索木

最近、スキップ リストと呼ばれるデータ構造に出会いました。二分探索木と非常によく似た動作をしているようです。

二分探索木に対してスキップ リストを使用する必要があるのはなぜでしょうか。

0 投票する
13 に答える
84781 参照

data-structures - 二分探索木の「内部ノード」とは何ですか?

「内部ノード」という用語の定義をインターネットで探しています。簡潔な定義が見つかりません。私が見ているすべてのソースは、用語を定義せずに使用しており、その使用法は、内部ノードが実際に何であるかの適切な定義をもたらしません.

リンクは、内部ノードが null ではない 2 つのサブツリーを持つノードであると想定していますが、元のツリーのどのノードが内部対外部であるかは述べていません。

http://www.math.bas.bg/~nkirov/2008/NETB201/slides/ch06/ch06-2.htmlは、内部ノードが適切なバイナリ ツリーにのみ存在し、それらに関する有用な情報があまり得られないことをほのめかしているようです。 .

内部ノードとは一体何なのか!?

0 投票する
12 に答える
130254 参照

data-structures - 二分探索木の定義で重複キーは許可されますか?

二分探索木の定義を見つけようとしていますが、至る所でさまざまな定義を見つけ続けています。

特定のサブツリーについて、左側の子キーはルート以下であると言う人もいます。

特定のサブツリーの場合、正しい子キーはルート以上であると言う人もいます。

また、私の古い大学のデータ構造の本には、「すべての要素にはキーがあり、同じキーを持つ要素は 2 つとない」と書かれています。

bstの普遍的な定義はありますか? 特に、同じキーの複数のインスタンスを持つツリーをどうするかに関して。

EDIT:多分私は不明確でした、私が見ている定義は

1) 左 <= ルート < 右

2) 左 < ルート <= 右

3) 重複キーが存在しないように、左 < ルート < 右。

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

prolog - プロローグは再帰的に最大のノードを見つける

単純な二分木だけで、最大のノードを見つけたいです。
ツリーの例: t(t(t(nil,1,nil),2,t(nil,3,nil)),4,t(t(t(nil,8,nil),5,nil),6, t(nil,7,nil)))

プロローグに適用することに頭を悩ませることはできません。ここでは、各ノードを表示します。どちらが得られますが、最大値を保存して再帰的に保持する方法がわかりません。

編集: すべてのリーフ ノードをチェックしますが、t(nil,8,nil) は無視します

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

java - Java TreeMap の並べ替えオプション?

Java クラス TreeMap は RB ツリーの実装を使用していると聞いています。この場合、TreeMap で順序、事前順序、および事後順序のツリー ウォークを行うにはどうすればよいでしょうか。

それとも、これは不可能ですか?

0 投票する
8 に答える
8692 参照

data-structures - 「20の質問」ゲームのために二分木をディスクに保存したい

要するに、私は二分木をディスク(一般的な木、必ずしもBSTではない)に保存するための洗練された方法を学び/開発したいと思います。これが私の問題の説明です:

「二十の質問」のゲームを実装しています。内部ノードが質問で、葉が回答である二分木を作成しました。ノードの左側の子は、誰かが現在の質問に「はい」と答えた場合にたどるパスであり、右側の子は「いいえ」の答えです。これは二分探索木ではなく、左の子が「はい」で右の子が「いいえ」の二分木であることに注意してください。

プログラムは、ユーザーに自分の答えをコンピューターが考えていたものと区別するように求めることによって、nullの葉に遭遇した場合に、ツリーにノードを追加します。

ユーザーがプレイするとツリーが構築されるため、これは適切です。きちんとしていないのは、ツリーをディスクに保存する良い方法がないということです。

ツリーを配列表現として保存することを考えました(ノードiの場合、左の子は2i + 1、右の2i + 2、親の場合は(i-1)/ 2)が、クリーンではなく、最終的には無駄なスペースがたくさん。

スパースバイナリツリーをディスクに保存するためのエレガントなソリューションのアイデアはありますか?

0 投票する
8 に答える
7413 参照

binary-tree - 二分探索木をスペルチェッカーとして使用する

たとえば 1000 語の辞書ファイルを読み込んでから、いくつかの段落があると言う別のドキュメントをチェックすることで、バイナリ検索ツリーをスペル チェッカーにする最も効率的な方法を考えています。

0 投票する
7 に答える
2890 参照

c# - ツリーをゼロから実装する

木をゼロから実装して、木について学ぼうとしています。この場合、C# Java または C++ で実行したいと思います。(組み込みメソッドを使用しない場合)

したがって、各ノードにはキャラクターが格納され、ノードごとに最大 26 個のノードが存在します。

各ノードへのポインターを格納するには、どのデータ構造を使用しますか?

基本的に、基数ツリーをゼロから実装しようとしています。

ありがとう、

0 投票する
10 に答える
87329 参照

algorithm - 二分木 vs. リンクリスト vs. ハッシュテーブル

現在取り組んでいるプロジェクトのシンボル テーブルを作成しています。シンボル テーブルの保存と作成に利用できるさまざまな方法の長所と短所について、人々の意見はどうなっているのかと思っていました。

私はかなりの検索を行いましたが、最も一般的に推奨されるのは、バイナリ ツリー、リンク リスト、またはハッシュ テーブルです。上記のすべての利点と欠点は何ですか? (C++ で作業)