JavaScriptで二分探索木(BinarySearchTree)を作成する方法
この記事では、JavaScriptで二分探索木(Binary Search Tree)を作成し、表現する方法を解説します。まずは BinarySearchTree クラスを作成し、そのクラスに Node プロパティを定義するところから始めましょう。
二分探索木とは
二分探索木(BST)は、各ノードが最大2つの子ノードを持つデータ構造です。「左の子ノードには親より小さい値、右の子ノードには親より大きい値を格納する」というルールに従うことで、高速な検索・挿入・削除を実現できます。
実装例
class BinarySearchTree {
constructor() {
// ルート要素をnullで初期化
this.root = null;
}
}
BinarySearchTree.prototype.Node = class {
constructor(data, left = null, right = null) {
this.data = data;
this.left = left;
this.right = right;
}
};コードの解説
まず、BinarySearchTree クラスのコンストラクタ内で、ルート要素を null で初期化しています。これは「木がまだ空である」状態を表します。
次に、prototype を使って Node クラスを定義しています。各ノードは以下の3つのプロパティを持ちます。
- data:ノードが保持する値
- left:左の子ノードへの参照(デフォルトは null)
- right:右の子ノードへの参照(デフォルトは null)
ここまでで、BSTクラスの基本的な骨格が完成しました。今後は挿入や検索などの機能をこの構造に追加しながら、クラスを段階的に拡張していきます。
-
JavaScriptで入力に応じて自動的に高さが変わるテキストエリアを作成する方法
Webフォームなどで長い文章を入力する際、テキストエリアの高さが固定されているとスクロールが必要になり、使い勝手が損なわれることがあります。そこで役立つのが、入力内容に応じて高さを自動的に調整する「自動リサイズテキストエリア」です。 仕組み 実装のポイントは次の2点です。 inputイベント:ユーザーがテキストを入力・貼り付けするたびに処理を実行します。 scrollHeightプロパティ:要素の中身全体の高さを取得し、その値をstyle.heightに設定することで、コンテンツに合わせた高さに変更できます。 一度heightを「auto」に戻してからscrollHeightを設定するのが
-
JavaScriptのimportで波括弧「{}」を使う理由とは?名前付きエクスポートの基本をわかりやすく解説
JavaScript(ESモジュール)でモジュールを読み込む際、import 文に波括弧 { } を付けるかどうか迷ったことはありませんか?実はこの波括弧は、名前付きエクスポート(named export)を読み込むために必要な記法です。本記事では、実際のコード例を使いながら、{ } の役割と使い方を詳しく解説します。 importで { } を使う場面とは JavaScriptのESモジュールでは、エクスポート方法によって読み込み側の書き方が変わります。 名前付きエクスポート:export { 関数名 } のようにエクスポートされたものを読み込む場合は、import { 名前 } fro