Secara intuitif, "pohon seimbang" harus pohon di mana sub-pohon kiri dan kanan di setiap node harus memiliki "kurang lebih sama" jumlah node.
Tentu saja, ketika kita berbicara tentang pohon merah-hitam * (lihat definisi di akhir) yang seimbang, kita benar-benar berarti bahwa mereka adalah tinggi badan seimbang dan dalam arti bahwa, mereka seimbang.
Misalkan kita mencoba memformalkan intuisi di atas sebagai berikut:
Definisi: Pohon Biner disebut -balanced, dengan , jika untuk setiap simpul , ketidaksamaan0 ≤ μ ≤ 1 N
memegang dan untuk setiap , ada beberapa simpul yang gagal pernyataan di atas. adalah jumlah node di sub-pohon kiri danadalah jumlah node di bawah pohon dengan sebagai root (termasuk root).| N L | N | N | N
Saya percaya, ini disebut pohon dengan bobot seimbang dalam beberapa literatur tentang topik ini.
Satu dapat menunjukkan bahwa jika pohon biner dengan node adalah -balanced (untuk konstanta ), maka ketinggian pohon adalah , sehingga mempertahankan pencarian yang bagus properti.μ μ > 0 O ( log n )
Jadi pertanyaannya adalah:
Apakah ada beberapa sedemikian rupa sehingga setiap pohon merah-hitam yang cukup besar adalah seimbang?μ
Definisi pohon Merah-Hitam yang kami gunakan (dari Pengantar ke Algoritma oleh Cormen et al):
Pohon pencarian biner, di mana setiap node berwarna merah atau hitam dan
- Akar hitam
- Semua NULL node berwarna hitam
- Jika simpul berwarna merah, maka kedua anaknya berwarna hitam.
- Untuk setiap node, semua jalur dari node ke node NULL keturunan memiliki jumlah yang sama dari node hitam.
Catatan: kami tidak menghitung node NULL dalam definisi -seimbang di atas. (Meskipun saya percaya itu tidak masalah jika kita melakukannya).
sumber
Jawaban:
Klaim : pohon Merah-hitam dapat sewenang-wenang un- -balanced.μ
Ide Bukti : Isi subtree kanan dengan node sebanyak mungkin dan kiri dengan node sesedikit mungkin untuk jumlah dari node hitam pada setiap jalur root-leaf.k
Bukti : Tentukan urutan pohon merah-hitam sehingga memiliki simpul hitam pada setiap jalur dari akar ke daun manapun (virtual). Tentukan denganTk Tk k Tk=B(Lk,Rk)
Jelas, semua adalah pohon merah-hitam.Tk
Misalnya, ini adalah , dan , masing-masing:T1 T2 T3
[ sumber ]
[ sumber ]
[ sumber ]
Sekarang mari kita verifikasi kesan visual dari sisi kanan yang lebih besar dibandingkan dengan yang kiri. Saya tidak akan menghitung daun virtual; mereka tidak memengaruhi hasilnya.
kiri selesai dan selalu memiliki tinggi dan karenanya mengandung node. Subtree kanan, di sisi lain, lengkap dan memiliki tinggi dan karenanya mengandung node. Sekarang nilai -balance untuk root adalahTk k−1 2k−1 2k−1 22k−1 μ
yang membuktikan bahwa tidak ada seperti yang diminta.μ>0
sumber
Tidak. Pertimbangkan pohon merah-hitam dengan struktur khusus berikut.
Sangat mudah untuk memeriksa bahwa ini adalah pohon merah-hitam yang valid. Tetapi jumlah node di subtree kanan ( ) kira-kira kuadrat dari jumlah node di subtree kiri ( ).2 d + 1 - 122d+1−1 2d+1−1
sumber