-
Javascriptを使用したBinaryTreeの作成
Javascriptでバイナリ検索ツリーを作成して表現する方法を理解しましょう。まず、クラスBinarySearchTreeを作成し、その上にプロパティNodeを定義する必要があります。 例 class BinarySearchTree { constructor() { // Initialize a root element to null. this.root = null; } } BinarySearchTree.prototype.Node =
-
Javascriptのツリーにキーを挿入する
新しく作成されたバイナリツリーに最初に挿入すると、ルートにノードが作成されます。左の子が親よりも小さく、右の子が親よりも大きいという二分探索木のプロパティに従って、さらに挿入が挿入されます。 このアルゴリズムをコードで実装する方法を見てみましょう- 例 insertIter(data) { let node = new this.Node(data); // Check if the tree is empty if (this.root === null) { // I
-
Javascriptバイナリ検索ツリーで値を検索する
BSTのプロパティを使用して、BST内の要素を検索します。最初に検索の反復実装を見てみましょう- 例 searchIter(data) { let currNode = this.root; while (currNode !== null) { if (currNode.data === data) { // Found the element! return tr
-
Javascriptバイナリ検索ツリーで最小値と最大値を検索する
二分探索木で、左の子が常に親よりも小さいというプロパティを見ると、左の子に向かって反復し続けると、子が残っていないノードの場合、基本的にBSTで最小の要素が見つかります。 この関数をコードに実装しましょう。今後は、関数の単一バージョン、つまり反復または再帰のいずれかのみを実装します。この場合、反復関数を作成します- 例 getMinVal() { if (this.root === null) { throw "Empty tree!"; } let c
-
Javascriptのキーと値のメソッド
辞書を操作する場合、タスクの配列として辞書のキーのみが必要になることがあります。 Object.keysを使用して、オブジェクトのプロパティを簡単に取得できます。このメソッドを使用して、コンテナオブジェクトからキーを返します。 例 keys() { return Object.keys(this.container); } これは、-を使用してテストできます。 例 const myMap = new MyMap(); myMap.put("key1", "value1"); myMap.put("key2&quo
-
Javascriptを使用して辞書をクリアする
コンテナの内容を単純にクリアするclear()関数を実装します。たとえば、 例 clear() { this.container = {} } これは、-を使用してテストできます。 例 const myMap = new MyMap(); myMap.put("key1", "value1"); myMap.put("key2", "value2"); myMap.display(); myMap.clear(); myMap.display(); 出力 これにより、出力
-
Javascriptで辞書をループする
ここでは、クラス内の各関数にaを実装し、すべてのキーと値のペアで呼び出すことができるコールバックを受け入れます。このような関数を実装する方法を見てみましょう- 例 forEach(callback) { for (let prop in this.container) { // Call the callback as: callback(key, value) callback(prop, this.container[prop]); } } これは、-を
-
Javascriptの辞書クラス
これがMyMapクラスの完全な実装です- 例 class MyMap { constructor() { this.container = {}; } display() { console.log(this.container); } hasKey(key) { return key in this.container; &n
-
Javascriptのハッシュテーブルデータ構造
ハッシュテーブルは、データを関連付けて格納するデータ構造です。ハッシュテーブルでは、データは配列形式で格納され、各データ値には独自のインデックス値があります。目的のデータのインデックスがわかっている場合、データへのアクセスは非常に高速になります。 したがって、データのサイズに関係なく、挿入および検索操作が非常に高速なデータ構造になります。ハッシュテーブルは、ストレージメディアとして配列を使用し、ハッシュ手法を使用して、要素が挿入される場所または要素が配置される場所のインデックスを生成します。 ハッシュ ハッシュは、キー値の範囲を配列のインデックスの範囲に変換する手法です。モジュロ演算子を使用
-
Javascriptを使用してハッシュテーブルを作成する
これらすべてのメソッドを定義するために使用する単純なクラスを設定しましょう。ハッシュテーブルを格納するためのコンテナオブジェクトを作成し、テーブルを表示するための表示関数を作成します。衝突の解決には、チェーンを使用することに注意してください。 表示関数は、テーブル内の各エントリ(ハッシュ値)を取得し、それに関連付けられているすべてのペアを出力します。 例 また、プロトタイプに新しいクラスを作成して、キーと値のペアを格納します。 class HashTable { constructor() { this.container
-
Javascriptを使用してハッシュテーブルに要素を追加します
ハッシュテーブルに要素を追加する場合、最も重要な部分は衝突の解決です。同じようにチェーンを使用します。ここで読むことができる他のアルゴリズムがあります:https://en.wikipedia.org/wiki/Hash_table#Collision_resolution それでは、実装を見てみましょう。これを単純にするためにのみ整数で機能するハッシュ関数を作成します。ただし、より複雑なアルゴリズムを使用して、すべてのオブジェクトをハッシュすることができます- 例 put(key, value) { let hashCode = hash(key); &nbs
-
Javascriptハッシュテーブルの検索要素
これはすでにputメソッドに実装されています。もう一度単独で見てみましょう。 例 get(key) { let hashCode = hash(key); for(let i = 0; i < this.container[hashCode].length; i ++) { // Find the element in the chain if(this.container[hashCode][i].key === key) {  
-
Javascriptハッシュテーブルから要素を削除します
要素を削除するには、要素を見つけて、配列から所定の位置にある要素を削除する単純なスプライス関数呼び出しを使用して削除する必要があります。 同じの実装を見てみましょう- 例 remove(key) { let hashCode = this.hash(key); for (let i = 0; i < this.container[hashCode].length; i++) { // Find the element in the chain if
-
Javascriptを使用してハッシュテーブルをループする
次に、すべてのキーと値のペアをループして、それらの値に対してコールバックを呼び出すことができるforEach関数を作成しましょう。このためには、コンテナ内の各チェーンをループし、キーと値のペアでコールバックを呼び出す必要があります。 例 forEach(callback) { // For each chain this.container.forEach(elem => { // For each element in each chain call callback on KV pair &
-
Javascriptを使用してセットをクリアする
明確な方法は非常に簡単です。コンテナ変数を新しいオブジェクトに再割り当てするだけで、セットは空になります。これは次のように実装できます- 例 clear() { this.container = {}; } -を使用してこれをテストできます 例 const testSet = new MySet(); testSet.add(1); testSet.add(2); testSet.add(5); testSet.display(); testSet.clear(); testSet.display(); 出力 これにより、出力が得られます- { '1&
-
Javascriptを使用してセットをループする
実装したセットでは、クラス内の関数ごとにを作成し、すべての要素で呼び出すことができるコールバックを受け入れることができます。このような関数を実装する方法を見てみましょう- 例 forEach(callback) { for (let prop in this.container) { callback(prop); } } これは、-を使用してテストできます。 例 const testSet = new MySet(); testSet.add(1); testSet.add(2); testSe
-
Javascriptで2つのセットを追加する
2セットを加算する操作はユニオンと呼ばれます。重複をチェックしながら、あるセットから別のセットにすべてのオブジェクトを追加する必要があります。このメソッドを実装するには、すでに実装した2つのメソッドを使用できます。 既存のセットを変更したくないので、この関数を静的関数として実装しますが、新しいセットを作成して返します。最初に、渡されたオブジェクトが本当にMySetクラスのインスタンスであるかどうかを確認する必要があります。 例 static union(s1, s2) { if (!s1 instanceof MySet || !s2 instanceof MyS
-
Javascriptで2つのセットを減算します
2セットの違いは、減算されるセットのすべての要素が、減算されるセットから削除される必要があることを意味します。したがって、2番目のセットを反復処理して、最初のセットからその中に存在するすべての要素を削除できます。 例 static difference(s1, s2) { if (!s1 instanceof MySet || !s2 instanceof MySet) { console.log("The given objects are not of type MySet"); &nb
-
JavascriptのSetクラス
これがMySetクラスの完全な実装です。 例 class MySet { constructor() { this.container = {}; } display() { console.log(this.container); } has(val) { return this.container.hasOwnProperty(val)
-
Javascriptの辞書データ構造
コンピュータサイエンスでは、連想配列、マップ、シンボルテーブル、または辞書は、(キー、値)ペアのコレクションで構成される抽象データ型であり、可能な各キーは次の場所に表示されます。コレクションの中で最も一度。辞書はマップとも呼ばれることに注意してください。 辞書の問題は、古典的なコンピュータサイエンスの問題です。つまり、「検索」、「削除」、および「挿入」操作中にデータのセットを維持するデータ構造を設計するタスクです。辞書の実装にはさまざまな種類があります。 ハッシュテーブルの実装 ツリーベースの実装(セルフバランスおよびアンバランスツリー) リストベースの実装 辞書を使用する場合 辞書は