250 likes | 1.13k Views
AVL Tree ,B-tree. วิวัฒน์ ชินนาทศิริกุล. AVL Tree (Adelson-Velskii and Landis Tree). นิยามของ AVL Tree 1. เป็น binary search tree 2. เป็น Balanced tree Balanced tree หมายถึง Tree ที่มีคุณสมบัติดังนี้คือ ทุกโหนดใน tree ต้องมีค่าน้ำหนักประจำโหนด เป็น -1 , 0 หรือ 1 เท่านั้น
E N D
AVL Tree ,B-tree วิวัฒน์ ชินนาทศิริกุล
AVL Tree(Adelson-Velskii and Landis Tree) • นิยามของ AVL 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
25 11 14 43 3 24 8 32 56 1 18 34 41 3 74 29 86 13 72 81 คำถาม Tree ที่กำหนดด้านล่างเป็น AVL Tree หรือไม่ รูป B รูป A
สาเหตุที่ทำให้ 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 24 2 7 2
2. Single rotation : rotate left A 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
24 11 45 5 15 82 11 5 24 15 45 82
3. Double rotation: left of right A B 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 42 43 3 5
ตัวอย่าง จงสร้าง 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