Apakah ada definisi formal tentang tinggi rata-rata pohon biner?
Saya punya pertanyaan tutorial tentang menemukan ketinggian rata-rata pohon biner menggunakan dua metode berikut:
Solusi alami mungkin mengambil panjang rata-rata dari semua jalur yang mungkin dari akar ke daun, yaitu
.
Pilihan lain adalah untuk mendefinisikannya secara rekursif, yaitu tinggi rata-rata untuk sebuah simpul adalah rata-rata di atas ketinggian rata-rata dari sub pohon ditambah satu, yaitu
dengan untuk daun dan untuk slot kosong.l avh 2 ( _ ) = 0
Berdasarkan pemahaman saya saat ini, misalnya tinggi rata-rata pohon
1
/ \
2 3
/
4
is dengan metode kedua, yaitu menggunakan rekursi.
Namun, saya masih tidak mengerti bagaimana melakukan yang pertama. tidak benar.
Jawaban:
Tidak ada alasan untuk percaya bahwa kedua definisi tersebut menggambarkan ukuran yang sama. Anda dapat menulis secara rekursif juga:avh1
dengan untuk daun l . Jika Anda tidak percaya bahwa ini sama, buka definisi avh 1 di sebelah kanan, atau lakukan bukti induksi.avh1( l ) = 0 l avh1
Sekarang kita melihat bahwa bekerja sangat berbeda dari avh 2 . Sementara avh 2 menimbang ketinggian rekursif dari simpul anak - anak secara merata (menambah dan membaginya menjadi dua), avh 1 menimbang mereka sesuai dengan jumlah daun yang dikandungnya. Jadi mereka sama (modulo jangkar) untuk pohon-pohon yang seimbang daun, yang seimbang dalam arti bahwa pohon saudara memiliki banyak daun yang sama. Jika Anda menyederhanakan bentuk rekursif avh 1 dengan lv ( l ) = lv ( r )avh1 avh2 avh2 avh1 avh1 lv( l ) = lv( r ) ini segera terlihat. Namun, pada pohon yang tidak seimbang, mereka berbeda.
Perhitungan Anda memang benar (diberikan definisi Anda); Perhatikan bahwa pohon contoh tidak seimbang.
sumber
Sunting: Jeffe membuat poin bagus dalam komentarnya di atas. Anda mungkin harus membaca "benar vs salah" dalam jawaban berikut sebagai "nyaman / konsisten vs tidak konsisten".
Tampaknya perhitungan kedua Anda salah. Biarkan ketinggian subtree dengan simpul tunggal (yaitu daun) menjadi 0. Kemudian ketinggian root subtree di:
Saya pikir Anda melakukan perhitungan pertama dengan benar, dan 1,5 adalah jawaban yang tepat.
sumber