Pohon hamparan dengan jumlah rotasi ganjil

9

Saat memasukkan item ke pohon splay, rotasi dilakukan berpasangan berdasarkan pola zig-zag atau zig-zig. Ketika ada jumlah rotasi yang ganjil untuk dilakukan, kita bisa melakukan rotasi ekstra dimulai dari daun atau menyimpan rotasi ekstra dan melakukannya di root. Apakah itu penting?

Sebagai contoh, pada gambar terlampir saya memasukkan 4 ke dalam BST, dan "membentangkannya" ke root. Di bagian atas gambar, saya pertama-tama menemukan pasangan zig-zig di simpul daun dan melakukan zig-zag splay dari bawah meninggalkan rotasi kanan akhir di root. Di bagian bawah gambar, saya pertama kali melakukan rotasi ganjil mulai dari daun, dan kemudian melakukan zig-zig splay ke root.

Yang mana yang benar? Atau keduanya akan mengarah pada kinerja splay-tree yang biasa?

dua cara untuk meratakan jumlah rotasi ganjil

wcochran
sumber

Jawaban:

4

1+3(r(t)-r(x))tr(kamu): =catatan(berat kamusubtree)Φ(T)=x simpul dari Tr(t)

Bukti lemma akses melihat pada biaya satu operasi zig / zig-zag / zig-zig dll. Anda mendapatkan

  1. 1+3(r+(kamu)-r(kamu))r+kamu

  2. 3(r+(kamu)-r(kamu))

1+3(r(t)-r(x))

Jika Anda mengubah urutan rotasi Anda akan mendapatkan jumlah yang sama. Satu-satunya perbedaan adalah bahwa sekarang '' +1 '' berasal dari rotasi pertama dan bukan dari rotasi terakhir. Anda bahkan bisa melakukan rotasi zig di tengah. Semua analisis (klasik) lebih lanjut bergantung pada lemma akses.

Namun, alasan mengapa Anda melakukan rotasi tunggal terakhir, adalah bahwa Anda tidak tahu apakah kedalaman node genap atau ganjil di muka.

A.Schulz
sumber