Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Melding Two Max HBLTs ในโครงสร้างข้อมูล


กลยุทธ์ Meld แบบ Recursive

A และ B เป็น HBLTs 2 ต้นที่จะ Meld:

  • ถ้าต้นไหนว่าง ให้อีกต้นเป็นผลลัพธ์
  • ถ้าทั้งคู่ไม่ว่าง: เปรียบเทียบ Root ค่ามากกว่าเป็น Root ของ Melded HBLT

สมมติ A มี Root ใหญ่กว่า L = Left Subtree ของ A C = Max HBLT จากการ Meld Right Subtree ของ A กับ B ผลลัพธ์: Root = A, Subtrees = L และ C ถ้า s(L) < s(C) ให้ C เป็น Left Subtree มิฉะนั้น L เป็น Left Subtree

ตัวอย่าง

Melding Two Max HBLTs ในโครงสร้างข้อมูล

เพิ่ม 7 เป็น Right Child ของ 9 แต่ s(L)=0, s(R)=1 จึง Swap 7 กลายเป็น Left Child

อีกตัวอย่าง

Melding Two Max HBLTs ในโครงสร้างข้อมูล

เพิ่ม HBLT ที่เล็กกว่าเป็น Right ของตัวใหญ่ชั่วคราว แล้ว Fix Property

Melding Two Max HBLTs ในโครงสร้างข้อมูล

ยังไม่รักษา Property ได้

Melding Two Max HBLTs ในโครงสร้างข้อมูล