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

การแทรก B-tree ในโครงสร้างข้อมูล


ที่นี่เราจะดูวิธีการแทรกลงใน B-Tree สมมติว่าเรามี B-Tree ด้านล่าง −

ตัวอย่าง B-Tree

การแทรก B-tree ในโครงสร้างข้อมูล

ในการแทรกองค์ประกอบ แนวคิดจะคล้ายกับ BST มาก แต่เราต้องปฏิบัติตามกฎบางประการ แต่ละโหนดมีลูก m และองค์ประกอบ m-1 หากเราแทรกองค์ประกอบลงในโหนดเดียว มีสองสถานการณ์ หากโหนดมีองค์ประกอบน้อยกว่า m-1 องค์ประกอบใหม่จะถูกแทรกลงในโหนดโดยตรง หากมีองค์ประกอบ m-1 แล้ว โดยนำองค์ประกอบทั้งหมดและองค์ประกอบที่จะแทรก แล้วนำค่ามัธยฐานขององค์ประกอบเหล่านั้น และค่ามัธยฐานจะถูกส่งไปยังรูทของโหนดนั้นโดยดำเนินการตามเกณฑ์เดียวกัน แล้วสร้างสองรายการ แยกรายการจากครึ่งซ้ายและครึ่งขวาของโหนด

สมมติว่าเราต้องการแทรก 79 เข้าไปในต้นไม้ ตอนแรกจะตรวจสอบด้วย root ซึ่งมีค่ามากกว่า 56 จากนั้นจะเข้าสู่แผนผังย่อยด้านขวาสุด ตอนนี้มันน้อยกว่า 81 ดังนั้นให้ย้ายไปที่ทรีย่อยทางซ้าย หลังจากนั้นก็จะถูกแทรกเข้าไปในรูท ตอนนี้มีสามองค์ประกอบ [66, 78, 79] ค่ามัธยฐานคือ 78 ดังนั้น 78 จะเพิ่มขึ้น และโหนดรากจะกลายเป็น [79, 81] และองค์ประกอบของโหนดจะถูกแบ่งออกเป็นสองโหนด คนหนึ่งถือ 66 และอีกคนถือ 79

B-Tree หลังจากใส่ 79.

การแทรก B-tree ในโครงสร้างข้อมูล

อัลกอริทึม

BTreeInsert(root, key)−

ป้อนข้อมูล − รูทของต้นไม้และคีย์ที่จะแทรก เราจะถือว่าไม่มีคีย์อยู่ในรายการ

x := Read root
if x is full, then
   y := new node
   z := new node
   Locate the middle object oi, stored in x, move the objects to the left of oi in to node y
   Move the object to the right of oi into node z.
   If x is an index node, then move the child pointers accordingly
   x->child[1] := address of y
   x->child[2] := address of z
end if