Apa yang Anda minta dimungkinkan karena kendala Anda.
Analisis
Kekuatan tabel hash adalah pencarian cepat dan kecepatan penyisipan. Untuk mendapatkan kecepatan itu, seseorang harus meninggalkan kemiripan urutan dalam tabel: yaitu entri semua tercampur. Daftar dapat diterima untuk digunakan sebagai entri tabel karena sementara traversal adalah O (n), daftar cenderung pendek dengan asumsi tabel hash cukup besar dan objek yang disimpan dalam tabel hash menggunakan algoritma hashing berkualitas baik.
Pohon pencarian biner (BST) memiliki penyisipan cepat dan pencarian di O (log 2 n). Ini juga memberlakukan pembatasan pada elemen yang disimpan: harus ada cara untuk memesan elemen. Mengingat dua elemen A dan B disimpan di pohon, harus mungkin untuk menentukan apakah A datang sebelum B atau jika mereka memiliki urutan yang setara.
Tabel hash tidak memberlakukan batasan seperti itu: elemen dalam tabel hash harus memiliki dua properti. Pertama, harus ada cara untuk menentukan apakah mereka setara; kedua, harus ada cara untuk menghitung kode hash deterministik. Pesanan bukan keharusan.
Jika elemen tabel hash Anda memiliki pesanan, maka Anda dapat menggunakan BST sebagai entri tabel hash untuk memegang objek dengan kode hash yang sama (collision). Namun, karena BST memiliki O (log 2 n) pencarian dan penyisipan, itu berarti kasus terburuk untuk seluruh struktur (tabel hash ditambah BST) secara teknis lebih baik daripada menggunakan daftar sebagai entri tabel. Tergantung pada implementasi BST, itu akan membutuhkan lebih banyak penyimpanan daripada daftar, tetapi kemungkinan tidak lebih.
Harap dicatat bahwa biasanya overhead dan perilaku BST tidak membawa apa-apa ke meja dalam situasi dunia nyata sebagai ember tabel hash, yang mengapa kinerja buruk daftar secara teoritis dapat diterima. Dengan kata lain, tabel hash mengkompensasi kelemahan daftar dengan menempatkan lebih sedikit item di setiap daftar (bucket). Namun : masalah secara khusus menyatakan bahwa tabel hash tidak dapat meningkat dalam ukuran, dan tabrakan lebih sering daripada khas dalam tabel hash.
Penerapan
Saya tidak akan meletakkan kode di sini karena jujur itu tidak benar-benar diperlukan dan Anda tidak memberikan bahasa.
Apa yang akan saya lakukan adalah cukup menyalin tabel hash standar apa pun yang ada di perpustakaan standar bahasa Anda ke dalam kelas baru, lalu ubah tipe keranjang tabel dari daftar menjadi pohon. Bergantung pada bahasa dan pustaka standarnya, ini mungkin hal yang sangat sepele untuk dilakukan.
Biasanya saya tidak akan menganjurkan copy paste paste seperti ini. Namun, ini adalah cara mudah untuk mendapatkan struktur data yang teruji pertempuran dengan sangat cepat.