ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยNantin Prasongsanti ได้เปลี่ยน 10 ปีที่แล้ว
1
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
โครงสร้างข้อมูลแบบ Tree (ต่อ)
2
โครงสร้างข้อมูลแบบ Tree
ต้นไม้แบบฮีป (Heap Tree) เป็นการจัดโครงสร้างข้อมูลแบบต้นไม้ไบนารีเกือบสมบูรณ์แบบหนึ่ง โดยที่ ต้นไม้ไบนารีเกือบสมบูรณ์แบบนี้ มีข้อกำหนดว่า ค่าที่บรรจุอยู่ภายในโหนด ใดๆ ที่เป็นโหนดพ่อจะต้องมีค่าสูงกว่าหรือเท่ากับโหนดลูกทั้งสองของมัน (Max Heap Tree)
3
ต้นไม้แบบฮีป (Heap Tree)
ตัวอย่างต้นไม้แบบฮีป
4
ต้นไม้แบบฮีป (Heap Tree)
ตัวอย่าง ที่ไม่ถูกต้อง
5
ต้นไม้แบบฮีป (Heap Tree)
Reheap Up สลับ Node กับ Parent จนกว่าจะถูก ตำแหน่ง
6
ต้นไม้แบบฮีป (Heap Tree)
Reheap Down สลับ Node กับ Child ที่มีค่า มากกว่า
7
ต้นไม้แบบฮีป (Heap Tree)
การใส่ข้อมูลเข้าไปในฮีปมีขั้นตอนดังนี้ 1. ใส่ข้อมูลเข้าไปที่โหนดสุดท้ายของฮีป 2. ถ้าข้อมูลที่ใส่เข้าไปนั้นทำให้ได้เป็นต้นไม้ฮีปการใส่ก็เสร็จสิ้น 3. ถ้าต้นไม้ที่ได้ไม่เป็นต้นไม้ฮีป ให้ทำการปรับต้นไม้ที่ได้ให้เป็นฮีป โดยการเปรียบเทียบค่าที่ใส่เข้ามาใหม่กับโหนดพ่อของมัน ถ้าโหนดที่ใส่เข้าไป มีค่ามากกว่าให้สลับที่ ทำเรื่อยๆจนกระทั่งปรับสิ้นสุด
8
ต้นไม้แบบฮีป (Heap Tree)
เติมค่า 10 เข้าไปในต้นไม้ฮีป 9 8 5 7 6 10
9
ต้นไม้แบบฮีป (Heap Tree)
8 5 9 10 8 5 9 10 8 5 9 10 8 5 9 10
10
ต้นไม้แบบฮีป (Heap Tree)
ฮีปใหม่ที่ได้ 9 7 8 6 5 10
11
ต้นไม้แบบฮีป (Heap Tree)
ลบค่า 10 ออกจากฮีป 10 9 6 7 8 2 5 1 4 3
12
ต้นไม้แบบฮีป (Heap Tree)
9 9 9 9 8 8 8 8 3 3 3 3
13
ต้นไม้แบบฮีป (Heap Tree)
ฮีปใหม่ที่ได้ 9 8 6 7 3 2 5 1 4
14
โครงสร้างข้อมูลแบบ Tree
ต้นไม้เอวีแอล (AVL Tree) เป็นไบนารีเซิร์ซเทรีแบบต้นไม้ไบนารีสมดุล : ถ้า T คือต้นไม้ใดๆ และ N คือโหนดใดๆ บนต้นไม้ T แล้ว ความแตกต่าง ระหว่างความสูงของต้นไม้ยอ่ย (Sub Tree) ที่อยู่ทางขวา และทางซ้าย ของ N จะถูกเรียกว่า บาลานซ์แฟคเตอร์ (Balance Factor) และต้นไม้ T จะถูก เรียกว่าต้นไม้สมดุล เมื่อบาลานซ์แฟคเตอร์ของ N ใดๆ ต้องมีค่าไม่เกิน |1| (ต้องมีค่าเป็น -1 หรือ 0 หรือ 1)
15
ต้นไม้เอวีแอล (AVL Tree)
Non-AVL 1 2 3 AVL น้ำหนักความสูงของ node = ความสูง Subtree(ซ้าย) - ความสูง Subtree(ขวา)
16
ต้นไม้เอวีแอล (AVL Tree)
AVL TREE เมื่อมี Tree ที่ไม่สมดุลจะเกิดการหมุนเพื่อให้สมดุลซึ่งมี 4 วิธี 1. การหมุนซ้าย : โหนดทางขวามากกว่าซ้าย ยกโหนดที่อยู่ขวาขึ้นมา 2. การหมุนขวา : โหนดทางซ้ายมากกว่าขวา ยกโหนดที่อยู่ซ้ายขึ้นมา 3. การหมุนขวาไปซ้าย : หมุนขวาก่อน แล้วค่อยหมุนซ้าย 4. การหมุนซ้ายไปขวา : หมุนซ้ายก่อน แล้วค่อยหมุนขวา
17
ต้นไม้เอวีแอล (AVL Tree) - การหมุนซ้าย
-2 7 5 -1 7 5 8 ไม่สมดุล 8 สมดุล
18
ต้นไม้เอวีแอล (AVL Tree) - การหมุนขวา
19
ต้นไม้เอวีแอล (AVL Tree) - การหมุนขวาไปซ้าย
หมุนขวาครั้งแรก หมุนซ้ายครั้งที่ 2
20
ต้นไม้เอวีแอล (AVL Tree) - การหมุนซ้ายไปขวา
หมุนซ้ายครั้งแรก หมุนขวาครั้งที่ 2
21
การใส่โหนดใหม่เข้าไปใน AVL Tree
ถ้า node เข้าไปใหม่ทำให้ Tree เสียสมดุล ทำให้สมดุลได้โดยการหมุน ตัวอย่าง ใส่ node 5,7,10,15,19,20
22
การใส่โหนดใหม่เข้าไปใน AVL Tree
ใส่ node 5,7,10,15,19,20
23
การใส่โหนดใหม่เข้าไปใน AVL Tree
ใส่ node 5,7,10,15,19,20
24
การลบ node ใน AVL TREE ถ้าลบโหนดออกไปแล้วเกิดเสียสมดุล ก็ทำให้ต้นไม้สมดุล โดยการหมุน เมื่อลบ node 4 เมื่อลบ node 2
25
การลบ node ใน AVL TREE เมื่อไม่สมดุล ก็หมุนให้สมดุล จะได้เป็น
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.