0

こんにちは、私はJavaが初めてで、バイナリ検索ツリーに辞書を実装する必要がありますが、どこから始めればよいか本当にわかりません。このディクショナリに名前と年齢を持つ学生を保存する必要があります。したがって、BST では年齢を保存しますが、学生の名前をどこに保存し、名前を年齢フィールドに関連付けるにはどうすればよいでしょうか。

このようなものの実装の例があれば、必ずしもすべてのコードではなく、最初の部分だけを提供していただければ幸いです。開始できます。Java にない場合は、C++ コードも有効です。

4

2 に答える 2

2

ディクショナリは、キーを値にマップし、特定のキーの値をクエリできるようにするデータ構造です。二分探索木にはキー (検索に使用される) もあり、追加のペイロード データ (値) を持つこともできます。したがって、ペイロード データを含む BST は、実際には既に辞書です。

したがって、通常の BST 実装を作成することから始めます (単純な実装については Wikipedia を参照してください。たとえば、http://en.wikipedia.org/wiki/Binary_search_tree )。ノードにペイロード属性を追加します。lookup(key)最初にキーでノードを検索しkey(通常の BST ルックアップを使用)、そのノードのペイロード属性を返す関数を追加します。ほら、そこにあなたの辞書があります。

于 2012-10-18T10:35:19.760 に答える
0

インターネット上には、単純な二分探索木を作成するためのリソースが多数あります。ディクショナリは、キーを指定して値を取得できるようにするデータ構造として単純に定義されます。二分探索木はすでにこれを行っています。実際に行う必要があるのは、クラスを作成してから、クラスにインターフェイスをStudent実装することです。次に、このメソッドは生徒を年齢で並べ替えます (年齢がクラスのフィールドであると仮定します)。ComparableStudentcompareToStudent

次のようなもの:

public class Student implements Comparable<Student> {

    public Integer age;

    public Integer getAge() {
        return age;
    }

    public int compareTo(Student o) {
        return this.getAge().compareTo(o.getAge);
    }

}
于 2012-10-18T10:39:29.650 に答える