Selain poin Macneils ...
Pohon merah-hitam mungkin lebih bermanfaat secara langsung karena ada operasi efisien yang bermanfaat yang tidak banyak didukung dalam implementasi perpustakaan standar seperti C ++ std::map
(setidaknya AFAIK). Pohon merah-hitam dapat mendukung "split" (memotong pohon menjadi dua, satu berisi kunci kurang dari kunci yang ditentukan, dan satu berisi kunci lebih besar) dan "bergabung" (sebaliknya, menggabungkan pohon kunci besar dengan pohon kecil kunci) keduanya dapat dilakukan dalam waktu O (log n), tetapi jika ini didukung di pustaka kontainer standar, tampaknya hal tersebut sangat tersembunyi.
Namun, "menambah" struktur data adalah umum. Contoh sederhana adalah menambahkan informasi ukuran-subtree ke node di hampir semua struktur data pohon untuk mendukung subskripsi O (log n). Contoh yang lebih canggih termasuk pohon interval.
Setelah Anda mendapatkan gagasan untuk menambah struktur data, ada banyak variasi yang dapat berguna untuk aplikasi tertentu - dan sangat sedikit yang tersedia pra-paket sebagai perpustakaan. Struktur data pustaka standar yang ada (misalnya, misalnya std::map
) tidak dapat ditambah singkat dengan menyalin kode sumber dan memodifikasinya secara langsung - Anda tidak dapat menambahnya menggunakan parameter templat.
Tentu saja untuk mengembangkan struktur data yang ditambah, Anda perlu memahami struktur data yang tidak ditambah.
Pohon AVL bisa lebih cepat daripada pohon merah-hitam jika Anda melakukan lebih banyak pencarian daripada menyisipkan / menghapus (dan asalkan Anda tidak memerlukan operasi split / join itu), jadi tergantung pada aplikasinya, mereka mungkin merupakan basis yang sangat baik untuk menambah