Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah pokok AA dalam C/C++?

Apakah pokok AA dalam C/C++?

WBOY
WBOYke hadapan
2023-09-05 10:41:091547semak imbas

Dalam sains komputer, pokok AA ditakrifkan sebagai pelaksanaan pokok yang seimbang untuk penyimpanan dan pengambilan data yang dipesan dengan cekap. Pokok AA dianggap sebagai varian pokok merah-hitam, pokok carian binari yang menyokong penambahan dan pemadaman entri yang cekap. Tidak seperti pokok merah-hitam, nod merah pada pokok AA hanya boleh ditambah sebagai nod anak kanan dan tidak boleh ditambah sebagai nod anak kiri. Hasil daripada operasi ini adalah untuk mensimulasikan pokok 2-3 dan bukannya pokok 2-3-4, dengan itu memudahkan operasi penyelenggaraan. Algoritma penyelenggaraan untuk pokok merah-hitam perlu menganggap atau mempertimbangkan tujuh bentuk berbeza untuk mengimbangi pokok dengan betul.

Apakah pokok AA dalam C/C++?

Bertentangan dengan pokok merah-hitam, pokok AA atau hanya perlu assume pertimbangkan dua bentuk kerana hanya pautan yang betul boleh menjadi merah.

Apakah pokok AA dalam C/C++?

putaran seimbang#🎜#🎜韎##🎜🎜🎜🎜 nod memerlukan satu bit metadata mengimbangi (warna), manakala pepohon AA memerlukan O(log(log(N))) bit metadata bagi setiap nod, dalam bentuk "tahap" integer. Invarian berikut digunakan untuk pokok AA:

    Tahap setiap nod daun dianggap sebagai 1.
  • Tahap setiap nod anak kiri adalah 1 kurang daripada nod induknya.
  • Tahap setiap nod anak kanan adalah sama dengan atau 1 kurang daripada nod induknya.
  • Tahap setiap nod cucu kanan adalah lebih kecil daripada nod datuk neneknya.
  • Setiap nod dengan tahap lebih besar daripada 1 mempunyai dua nod anak.
  • Menyeimbangkan semula pokok AA adalah lebih mudah daripada mengimbangi semula pokok merah-hitam.

Dalam pokok AA, hanya dua operasi berbeza diperlukan untuk memulihkan keseimbangan: "skew" dan "split". Skew dianggap sebagai putaran kanan, menggantikan subpokok yang terdiri daripada pautan mendatar kiri dengan pautan mendatar kanan. Dalam kes Split, ia membelok ke kiri dan meningkatkan tahap, menggantikan subpokok yang mengandungi dua pautan mendatar kanan yang kurang berturut-turut dengan dua atau lebih pautan mendatar kanan berturut-turut. Kedua-dua operasi "skew" dan "split" diterangkan di bawah.

Takrifan skew fungsi adalah seperti berikut:

   input: An AA tree that needs to be rebalanced is represented by a node, t.
   output: The rebalanced AA tree is represented by another node.
if nil(t) then
return nil
else if nil(left(t)) then
return t
else if level(left(t)) == level(t) then
   Exchange the pointers of horizontal left links.
   l = left(t)
left(t) := right(l)
right(l) := t
return l
else
return t
end if
end function

Apakah pokok AA dalam C/C++?

#🎜🎜🎜#

#🎜🎜 #🎜🎜 Terjemahan bagi #function split ialah

ialah:

Apakah pokok AA dalam C/C++?

#🎜🎜🎜##🎜 split is#🎜🎜 #
   input: An AA tree that needs to be rebalanced is represented by a node, t.
   output: The rebalanced AA tree is represented by another node.
if nil(t) then
return nil
else if nil(right(t)) or nil(right(right(t))) then
return t
else if level(t) == level(right(right(t))) then
We have two horizontal right links. The middle node is taken, elevate it, and return it.
      r = right(t)
right(t) := left(r)
left(r) := t
level(r) := level(r) + 1
return r
else
return t
end if
end function

Split-

Atas ialah kandungan terperinci Apakah pokok AA dalam C/C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam