次のデータ構造を使用するだけで、配列を使用して Hashtable を実装できました。
LinkedList<Item<K,V>> table[]
const int MAX_SIZE = 100
つまり、リンクされたリストの配列(連鎖によるハッシュ)。
現在、さまざまな本で、順序付けられたデータが必要な場合は、BST を使用してハッシュテーブルを実装できると述べています。キーと値の両方を BST に組み込むにはどうすればよいですか。単一のデータ項目を保存するのと同じように両方を保存できますが、キーは、ハッシュ関数に渡された後、配列へのインデックスのように機能する整数を与えます。BST でキーを使用するにはどうすればよいですか? インデックスは必要ありませんか?
私が考えることができるのは、関数を使用して2つのキーを比較し、それに応じて通常の挿入、削除を行うことができるということです.
編集:
BSTを最初から持っているとします
class Node {
K key;
V value;
Node left;
Node right;
}
class BinarySearchTree {
Node root;
}
class Hashtable {
BinarySearchTree bst;
public void Hashtable() {
bst = new BinarySearchTree();
}
//hashfunction(K key)
//get(K Key)
//put(K key,V value)
//remove(K key)
}
整数にマップされたキーを使用して実装するにはどうすればよいですか
insert(V value)
BSTで。