Javaを使用して二分探索木アルゴリズムを実装する方法
Java を使用して二分探索ツリー アルゴリズムを実装する方法
二分探索ツリー (BST と呼ばれる) は、一般的に使用されるデータ構造です。挿入、削除、検索などの操作を効率的に実装できます。この記事では、Java を使用して二分探索ツリーを実装する方法を紹介し、対応するコード例を示します。
1. 二分探索ツリーの定義
二分探索ツリーは次の特徴を持つ順序付きツリーです:
- 各ノードは一意のキー値を持ちます。
- 左側のサブツリーのキー値はノードのキー値より小さく、右側のサブツリーのキー値はノードのキー値より大きくなります。
- 左側のサブツリーと右側のサブツリーも二分探索ツリーです。
2. 二分探索木のノード クラスの実装
まず、キー値と左と左の参照を含む二分探索木のノード クラスを定義します。右側の子ノード。コードは次のとおりです。
class Node { int data; Node left, right; public Node(int item) { data = item; left = right = null; } }
このノード クラスでは、data
フィールド、left
および を通じてノードのキー値を保存します。 right
フィールドはそれぞれ保存され、左と右の子ノードへの参照。
3. 二分探索木の挿入演算の実装
次に、二分探索木の挿入演算を実装します。挿入操作では、ノードのキー値の大きさを比較してノードの挿入位置を決定し、キー値が現在のノードより小さい場合は左側のサブツリーに挿入し、そうでない場合は右側のサブツリーに挿入します。
class BinarySearchTree { Node root; // 插入操作 public void insert(int key) { root = insertRec(root, key); } private Node insertRec(Node root, int key) { // 如果树为空,创建一个新的节点 if (root == null) { root = new Node(key); return root; } // 否则,递归地插入节点到左子树或右子树 if (key < root.data) root.left = insertRec(root.left, key); else if (key > root.data) root.right = insertRec(root.right, key); return root; } }
挿入操作では、まずツリーが空かどうかを判断し、空の場合はルート ノードとして新しいノードを作成します。それ以外の場合は、キー値と現在のノードの大小関係を比較して、左のサブツリーまたは右のサブツリーに再帰的に挿入します。
4. 二分探索木の検索操作の実装
二分探索木の検索操作は比較的単純で、キー値とノードの大小関係を段階的に比較するだけです。一致または遭遇が見つかるまで、空のノードが見つかるまで。コードは次のとおりです。
class BinarySearchTree { ... // 查找操作 public boolean contains(int key) { return containsRec(root, key); } private boolean containsRec(Node root, int key) { // 树为空或者找到匹配节点 if (root == null || root.data == key) return (root != null); // 比较键值与当前节点 if (key < root.data) return containsRec(root.left, key); else return containsRec(root.right, key); } }
検索操作では、まずツリーが空かどうか、または現在のノードが一致するかどうかを判断します。一致する場合は true を返し、一致しない場合は、キー値のサイズと現在のノードを比較して、左または右のサブツリーを再帰的に検索します。
5. 二分探索ツリーをテストするコード
最後に、実装した二分探索ツリーをテストするコードを作成します。コードは次のとおりです:
public class Main { public static void main(String[] args) { BinarySearchTree tree = new BinarySearchTree(); tree.insert(50); tree.insert(30); tree.insert(20); tree.insert(40); tree.insert(70); tree.insert(60); tree.insert(80); System.out.println(tree.contains(30)); System.out.println(tree.contains(90)); } }
実行結果は次のとおりです:
true false
ここでは、挿入操作を呼び出して、いくつかのノードをツリーに挿入します。次に、検索操作を呼び出して、キー値 30 と 90 を持つノードをそれぞれ検索します。返される結果は、挿入操作が成功したかどうかです。
上記の手順により、Java を使用して二分探索ツリー アルゴリズムを実装し、挿入と検索操作を実装することができました。実際のアプリケーションでは、二分探索ツリーは、削除操作、事前順序、順序内および順序後の走査などの機能もサポートできます。読者は、特定のニーズに応じて実装をさらに拡張できます。
以上がJavaを使用して二分探索木アルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。
