次に、js データ構造のツリーを調べてみましょう。ここでのツリーは、幹と枝を持つ現実のツリーに似ています。プログラムでは、ツリーは、すばやく見つける必要のあるデータを格納するのに非常に便利なデータ構造です。これは、階層データの抽象モデルです。ツリー構造は、親子関係を持つ一連のノードで構成されます。各ノードには親ノードと 0 個以上の子ノードがあります。以下はツリー構造です。
二分木と二分探索木の紹介 バイナリ ツリーのノードには、最大 2 つの子ノード (左側に 1 つ、右側に 1 つ) を含めることができます。この定義の利点は、ノードの挿入、検索、削除のためのより効率的なアルゴリズムを記述できることです。二分探索木は二分木の一種ですが、左の子ノードには親ノードより小さい値しか格納できず、右の子ノードには親ノードより大きい値を格納することができます。次に、このアイデアに従って二分探索木を実装します。 1. BinarySearchTreeクラスを作成する ここではコンストラクターを使用してクラスを作成します。
ノード間の関係を表すために、リンク リストに似たポインター メソッドを使用します。リンク リストがわからない場合は、次の記事「単一方向および双方向のリンク リストを実装する方法」をお読みください。 2. キーを挿入する
ツリーに新しいノードを挿入する処理は、次の 3 つの部分から構成されます。1. 新しいノードの Node クラス インスタンスを作成する --> 2. 挿入操作がルート ノードであるかどうかを判断し、そうである場合はルート ノードを指定します --> 3. ノードをルート以外のノードの場所に追加します。 insertNode の具体的な実装は次のとおりです。
ここでは再帰を使います。この後実装する検索や削除などでも再帰を多用するので、わからない場合はまず自分で学んでみましょう。キーを挿入するためのバイナリ ツリー インスタンスを作成します。
挿入された構造は二分探索木のルールに従って挿入され、その構造は上記の最初のツリー図に似ています。 ツリートラバーサル ツリーをトラバースする方法には、インオーダー、プレオーダー、ポストオーダーの 3 つがあります。
上記の紹介に基づいて、次の実装コードを作成できます。 1 順序ソート
順序付きトラバーサルを使用すると、ツリーを小さいものから大きいものへと並べ替えることができます。 2 予約注文の並べ替え
事前順序ソートを使用すると、構造化された出力の機能を実現できます。 3 事後順序ソート
後順序トラバーサルを使用すると、階層関係内のすべての要素のサイズを計算できます。 ツリー内の値の検索 ツリーで一般的に実行される検索には、最大値、最小値、特定の値の 3 つの種類があります。 1 最小 最小値は、左のツリーの最下層のノードとして定義されます。具体的な実装コードは次のとおりです。
同様に、最大値は次のように達成されます。
2. 特定の値を検索する
3 ノードを削除する
ノードを削除するときに考慮する必要がある状況は多数あります。ここでは、min に似た実装を使用して、最小のノードを見つける関数を記述します。削除するノードに 2 つの子ノードがある場合、削除する現在のノードを子ノードの中で最大のノードの値に置き換えてから、この子ノードを削除する必要があります。 この時点で、バイナリ検索ツリーは実装されましたが、まだ問題があります。ツリーの片側が非常に深い場合、特定のパフォーマンス問題が発生します。この問題を解決するには、任意のノードの左サブツリーと右サブツリーの高さの差が最大 1 である自己バランスバイナリツリーである AVL ツリーを使用できます。 |
<<: 人工知能(AI)が商業ビルのアプリケーションで成功を収める
>>: 無料の Python 機械学習コース パート 3: 多項式回帰
4月23日、海外メディアの報道によると、カリフォルニア大学サンフランシスコ校の研究チームが開発した...
翻訳者 |ブガッティレビュー | Chonglou日常のオンラインのやり取りの中でチャットボットを目...
AIが医療業界を変える[[397937]] AIとロボットはすでにいくつかの医療機関で活用されていま...
欧州連合は、AIを使って歴史的な香りや嗅覚要素を再現することを計画している研究チームに280万ユーロ...
1. ネストループ結合アルゴリズム:考え方は非常に単純かつ直接的です。関係 R の各タプル r を、...
正直に言ってみましょう。ジョブズが2007年に初めてiPhoneをリリースしたとき、革命的な新時代が...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
AI(人工知能)は、研究開発を通じて人間の理論、方法、技術、アプリケーション システムをシミュレート...
[[429985]]先週、米国陸軍協会(AUSA)の会議がワシントンで開催されました。アメリカのロボ...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
ビッグデータダイジェスト制作最近、カーネギーメロン大学、カリフォルニア大学バークレー校、Meta、N...
Wav2vec 2.0 [1]、HuBERT [2]、WavLM [3]などの音声事前トレーニングモ...
視聴者の要望に応えて、今日は C# モザイク アルゴリズムの実装についてお話します。古いルール、理解...