วิวัฒน์ ชินนาทศิริกุล AVL Tree ,B-tree วิวัฒน์ ชินนาทศิริกุล
AVL Tree (Adelson-Velskii and Landis Tree) 1. เป็น binary search tree 2. เป็น Balanced tree Balanced tree หมายถึง Tree ที่มีคุณสมบัติดังนี้คือ ทุกโหนดใน tree ต้องมีค่าน้ำหนักประจำโหนด เป็น -1 , 0 หรือ 1 เท่านั้น น้ำหนักของโหนด R = ความสูงของ TL - ความสูงของ TR
ตัวอย่างการตรวจสอบ AVL Tree โหนดที่บรรจุข้อมูล 12 มีความสูงเท่ากับ 1-3 = -2 โหนดที่บรรจุข้อมูล 7 มีความสูงเท่ากับ 0-2 = -2 โหนดที่บรรจุข้อมูล 20 มีความสูงเท่ากับ 2-1 = 1 12 7 20 15 43 5
คำถาม Tree ที่กำหนดด้านล่างเป็น AVL Tree หรือไม่ 1 11 3 24 18 34 13 86 8 25 14 43 32 56 29 74 3 81 41 72 รูป A รูป B
สาเหตุที่ทำให้ Tree ไม่สมดุลย์ (Unbalanced tree) 1. Left of Left เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่งซ้ายของโหนดลูกทางซ้าย เกิด Imbalance 11 11 5 24 5 24 3 7 3 7 2 เดิมต้นไม้สมดุลย์ ต้นไม้ไม่สมดุลย์
2. Right of Right เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่งขวาของโหนดลูกทางขวา เกิด Imbalance 11 11 5 24 5 24 15 45 15 45 เดิมต้นไม้สมดุลย์ ต้นไม้ไม่สมดุลย์ 82
3.Right of Left เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่งขวาของโหนดลูกทางซ้าย เกิด Imbalance 11 11 5 24 5 24 3 10 3 10 6
4. Left of Right เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่งขวาของโหนดลูกทางซ้าย เกิด Imbalance 11 11 5 24 5 24 15 45 15 45 18
การทำ Balancing Tree 1. Single rotation การหมุน 1 ครั้ง ใช้กรณีเกิด Left of Left และ Right of Right 2. Double rotation การหมุน 2 ครั้ง ใช้กรณีเกิด Right of Left และ Left of Right
1. Single rotation : rotate right C B B A C A
ตัวอย่าง 24 11 11 5 24 5 28 28 10 56 49 10 2 12 49 2 12 30 56 30
11 5 5 24 3 11 3 7 2 7 24 2
2. Single rotation : rotate left B B A C C
ตัวอย่าง 4 12 12 4 20 20 13 13 26 5 20 5 2 7 26 2 7 20 38 38
11 5 24 11 45 82 15 5 24 15 45 82
3. Double rotation : left of right C A C B
ตัวอย่าง 11 15 5 24 11 24 15 45 5 18 45 18
4. Double rotation : right of left C B A A C B
ตัวอย่าง 11 10 5 24 5 11 3 10 3 6 24 6
ตัวอย่าง จงสร้าง AVL Tree จากข้อมูลที่นำเข้ามาตามลำดับดังต่อไปนี้ 23, 54, 34, 2, 14, 7, 26, 16, 87, 21, 9
โครงสร้างข้อมูลแบบ B-Tree เป็นการจัดให้โครงสร้างต้นไม้อยู่ในสภาพสมดุล วิธีการหนึ่งที่เรียกว่า Balanced Order n Multiway Search Tree หรือ B-Tree (ตั้งชื่อตามผู้พัฒนาขึ้นคือ Buyer) คุณสมบัติของ B-Tree order m มีดังนี้ โหนดราก ถ้ามีลูกหลาน จะต้องมีอย่างน้อย 2 โหนด โหนดอื่นๆที่ไม่ใช่โหนดราก หรือโหนดใบ จะมีลูกไม่น้อยกว่า m/2 โหนดใบอยู่ในระดับเดียวกัน 4. B-Tree order m อาจเรียก (m-1)-m tree เช่น B-Tree order 3 อาจเรียกว่า 2-3 Tree
ตัวอย่าง B-tree order 3 หรือ 2-3 Tree 20 35 40 7 15 30 10 17 25 32 37 3 5 42 43
ตัวอย่าง จงสร้าง 2-3 Tree จากข้อมูลต่อไปนี้ 5 6 7 2 8 1 3 0 9 4
แบบฝึกหัด 1. จงสร้าง AVL Tree จากข้อมูลที่กำหนดให้ต่อไปนี้ 5, 23, 57, 8, 12, 45, 21, 36, 28, 4, 22, 13, 27 2. กำหนด 2-3 Tree ดังภาพ 15 6 19 25 5 17 7 8 20 21 29 30 จงนำข้อมูลต่อไปนี้ 9 , 10 , 22 , 40 , 12 ,45 , 50 แทรกลง 2-3 Tree