งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Trees (2) University of Phayao Sanchai Yeewiyom

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Trees (2) University of Phayao Sanchai Yeewiyom"— ใบสำเนางานนำเสนอ:

1 Trees (2) University of Phayao Sanchai Yeewiyom
School of Information & Communication Technology University of Phayao

2 Height of Tree Height of tree is the number of nodes on the longest path from the root to a leaf

3 Height of Tree Exp. A binary tree of height 3. ………………………..level 0
C ……………...level 2 D E F

4 Complete Binary Tree A binary tree of height h that is full down to level h-1 and has level h filled in from left to right.

5 Complete Binary Tree Exp. A B C

6 Incomplete Binary Tree
Exp. A A B C B D E F D

7 Incomplete Binary Tree
Exp. A B C E D F

8 AVL Tree Adel’son-Vel’skii and Landis
แก้ปัญหาโครงสร้างของ Tree ไม่สมดุล (Unbalanced Binary Tree) โดยไม่อนุญาตให้ Tree มี node ลึกเกินไป ใช้หลักการของ Balanced Binary Tree เข้ามาช่วย

9 Balanced Binary Tree A binary tree in which the left and right subtrees of any node has heights that differ by at most 1.

10 Balanced Binary Tree Exp. A A B C B C D E F D

11 Unbalanced Binary Tree
Exp. A B C E D F

12 Balance Factor = Height of TL - Height of TR
ใช้ในการตรวจสอบว่าเป็น AVL Tree หรือไม่ ถ้า Balance Factor ของทุก node ใน tree มีค่า 0, 1 หรือ -1 ถือว่าเป็น AVL Tree คำนวณจาก Balance Factor = Height of TL - Height of TR

13 Balance Factor Exp. +1 A A -1 +1 B C B C D E F D

14 Balance Factor Exp. -2 A -1 B C -1 E D F

15 Unbalanced Binary Tree
กรณีที่เกิด Unbalanced Binary Tree ต้องมีการปรับ Tree โดยใช้วิธีการหมุน (Rotation)

16 Tree Rotation การหมุนมี 2 วิธีคือ Single Rotation Double Rotation
Single Right Rotation Single Left Rotation Double Rotation Double Right-Left Rotation Double Left-Right Rotation

17 Single Right Rotation

18 Single Left Rotation

19 Double Right-Left Rotation

20 Double Left-Right Rotation

21 Exp. AVL Tree สร้าง AVL Tree จากเลขจำนวนเต็ม 1 ถึง 7 ตามลำดับ

22 Exp. AVL Tree

23 Exp. AVL Tree

24 Exp. AVL Tree 4. เพิ่ม 7 มีปัญหาที่โหนด 5 ทำการ single left rotation ได้ดังรูป b)

25 Exp. AVL Tree

26 Exp. AVL Tree

27 Exp. AVL Tree

28 Exp. AVL Tree

29 Heap Tree Heap is a complete binary tree that 1. That is empty or
2.1 Whose root contains a priority value greater than or equal to the priority value in each of its children, and 2.2 Whose root has heaps as its subtrees

30 Heap Tree Exp. hi ≥ h2i and hi ≥ h2i+1 (i = 1,2,3,…,n/2) h1 h2 h3 h4

31 Heap Tree Exp. 90 60 70 30 20 45 65

32 Heap Add

33 Heap Add

34 Heap Remove

35 Heap Remove

36 B-Tree เป็น Tree ที่มีคุณสมบัติแบบหลายทิศทาง ออกแบบมาเป็นพิเศษเพื่อใช้ในการเก็บข้อมูลในดิสก์ของเครื่องคอมพิวเตอร์ ทรีแบบหลายทิศทางตามจำนวนของ m (Multiway tree of order m) หมายความว่า ในแต่ละ node จะมีเส้นที่เชื่อมโยงไปยัง node ลูกได้เท่ากับ m ดังนั้นแสดงว่าใน 1 node จะมี node ลูกได้ไม่มากกว่า m ข้อมูล และมีข้อกำหนดของ B-Tree ดังนี้ จำนวนของ Key ในแต่ละ node ที่ไม่ใช่ node ใบจะมีจำนวนของ Key เท่ากับ m -1 node ใบทั้งหมดจะอยู่ในระดับเดียวกัน node ทั้งหมดที่ไม่ใช่ node ใบยกเว้น node รากจะมี node ลูกได้น้อยที่สุด m/2 node node แม่ ในแต่ละ node ใบจะมี node ลูกได้ 1 ถึง m node node ใบจะมี Key ได้ไม่มากกว่า m – 1

37 B-Tree

38 การเพิ่ม node ใน B-Tree
ในตัวอย่างนี้ กำหนดให้ m มีค่าเท่ากับ 5 และมีลำดับการเข้ามาของข้อมูลดังนี้   , 12, 8, 2, 25, 6, 14, 28, 17, 7, 52, 16, 48, 68, 3, 26, 29 และ 45 เพิ่มข้อมูล 1 : เป็นส่วนเริ่มต้น node ราก B-Tree ดังแสดงในรูป (a) เพิ่มข้อมูล 12 : เข้าไปใน node ราก B-Tree ดังแสดงในรูป (b) เพิ่มข้อมูล 8 : เข้าไปใน node ราก B-Tree ดังแสดงในรูป (c) เพิ่มข้อมูล 2 : เข้าไปใน node ราก B-Tree ดังแสดงในรูป (d)

39 การเพิ่ม node ใน B-Tree
เพิ่มข้อมูล 25: เมื่อเพิ่ม 25 เข้าไปใน node รากแล้วข้อมูลที่อยู่ใน node รากมีค่าเท่ากับ m คือ 5 ดังแสดงในรูป (a) ซึ่งไม่เป็นไปตามข้อกำหนดข้อที่ 5 ของ B-Tree ดังนั้น จึงต้องแยกด้วยการนำค่ากลางของ node ราก คือ 8 ขึ้นไปเป็น node รากแทนดังแสดงในรูป (b) (a) (b)

40 การเพิ่ม node ใน B-Tree
เพิ่มข้อมูล 6: เข้าไปใน node ข้อมูล <1, 2> ดังแสดงในรูป (a) เพิ่มข้อมูล 14: เข้าไปใน node ข้อมูล <12, 25> ดังแสดงในรูป (b) เพิ่มข้อมูล 28: เข้าไปใน node ข้อมูล <12, 14, 25> ดังแสดงในรูป (c)

41 การเพิ่ม node ใน B-Tree
เพิ่มข้อมูล 17: เมื่อเพิ่มข้อมูล 17 เข้าไปใน node <12, 14, 25, 28> ทำให้ข้อมูลใน node มีจำนวนเท่ากับ 5 ดังแสดงในรูป (a) ซึ่งไม่เป็นไปตามข้อกำหนดของ B-Tree ดังนั้น นำค่ากลางคือ 17 ขึ้นไปรวมกับ node รากดังแสดงในรูป (b) (a) (b)

42 การเพิ่ม node ใน B-Tree
เพิ่มข้อมูล 7: เข้าไปใน node ข้อมูล <1, 2, 6> ดังแสดงในรูป (a) เพิ่มข้อมูล 52: เข้าไปใน node ข้อมูล <25, 28> ดังแสดงในรูป (b) เพิ่มข้อมูล 16: เข้าไปใน node ข้อมูล <12, 14> ดังแสดงในรูป (c) เพิ่มข้อมูล 48: เข้าไปใน node ข้อมูล <25, 28, 52> ดังแสดงในรูป (d)

43 การเพิ่ม node ใน B-Tree
เพิ่มข้อมูล 68: ข้อมูล 68 จะอยู่รวมกับ node <25, 28, 48, 52> ดังแสดงในรูป (a) ทำให้ไม่เป็นตามข้อกำหนดของ B-Tree ดังนั้น จึงนำคีย์ในตำแหน่งตรงกลางคือ 48 ขึ้นไปรวมกับ node รากดังแสดงผลการเพิ่ม 68 ในรูป (b)

44 การเพิ่ม node ใน B-Tree
เพิ่มข้อมูล 3: ข้อมูล 3 ถูกเพิ่มเข้าไปใน node <1, 2, 6, 7> ดังแสดงในรูป (a) ทำให้มีข้อมูลภายใน node ไม่เป็นตามกำหนดของ B-Tree ดังนั้น นำข้อมูลตรงกลางคือ 3 ขึ้นไปรวมกับ node ราก ดังแสดงในรูป (b) (a) (b)

45 การเพิ่ม node ใน B-Tree
เพิ่มข้อมูล 26: เข้าไปใน node ข้อมูล <25, 28> ดังแสดงในรูป (a) เพิ่มข้อมูล 29: เข้าไปใน node ข้อมูล <25, 26, 28> ดังแสดงในรูป (b)

46 การเพิ่ม node ใน B-Tree
เพิ่มข้อมูล 45: ข้อมูล 45 จะถูกเพิ่มร่วมกับ node <25, 26, 28, 29> ดังแสดงในรูป (a) ซึ่งไม่เป็นไปตามข้อกำหนดของ B-Tree จึงนำข้อมูล 28 ไปร่วมกับ node ราก <3, 8, 17, 48> ทำให้จำนวนข้อมูลใน node รากไม่เป็นไปตามข้อกำหนดของ B-Tree จึงนำข้อมูล 17 ขึ้นไปเป็น node รากใหม่ ดังแสดงผลการเพิ่ม 45 ในรูปที่ (b)

47 การเพิ่ม node ใน B-Tree
เพิ่มคีย์ใหม่ในตำแหน่งใบ ถ้าการเพิ่มคีย์เข้าไปในตำแหนงใบแล้วมีจำนวนคีย์เท่ากับค่า m จะต้องแยก node ใบออกเป็นสองกลุ่ม และนำคีย์ในตำแหน่งกลางขึ้นไปเป็น node พ่อแม่ ถ้าคีย์ในตำแหน่ง node รากถูกแยกเป็น 2 กลุ่ม จะทำให้คีย์ในตำแหน่งตรงกลางถูกกำหนดให้เป็น node รากใหม่

48 การลบ node ใน B-Tree การลบคีย์ใน B-Tree จะต้องลบข้อมูลในตำแหน่ง node ใบ ถ้าตำแหน่งคีย์ที่ต้องการลบอยู่ในตำแหน่งใบ และยังมีคีย์อื่นที่ไม่ใช้คีย์ที่ต้องการลบอยู่ใน node เดียวกัน ในกรณีนี้สามารถลบคีย์ออกจาก B-Tree ได้ทันที ถ้าตำแหน่งคีย์ที่ต้องการลบไม่ได้อยู่ในตำแหน่งใบ ให้ใช้หลักการ Inorder successor มาสลับตำแหน่งของคีย์ที่ต้องการลบกับคีย์ที่อยู่ในตำแหน่งใบ จึงลบคีย์ออกจาก B-Tree เมื่อลบคีย์แล้วส่งผลทำให้คีย์ที่อยู่ใน node มีจำนวนน้อยกว่าจำนวนของคีย์ที่กำหนดไว้ ให้พิจารณาดู node ในระดับพี่น้องดังต่อไปนี้

49 การลบ node ใน B-Tree ถ้า node ในระดับพี่น้องมีจำนวนของคีย์มากกกว่าหนึ่งคีย์ให้เลื่อนคีย์ในระดับพ่อแม่ลงมาแทนคีย์ที่ถูกลบไปและเลื่อนคีย์ในตำแหน่ง node พี่น้องขึ้นไปแทนคีย์ใน node พ่อแม่ที่ถูกเลื่อนลงไป ดังแสดงการเลื่อนตำแหน่งใน B-Tree

50 การลบ node ใน B-Tree ถ้า node ในระดับพี่น้องมีจำนวนของคีย์เท่ากับหนึ่ง ในกรณีนี้จะใช้หลักการรวมคีย์ โดยนำคีย์ในระดับพ่อแม่ลงไปรวมกับคีย์ในระดับพี่น้อง ดังแสดงการรวมคีย์ในรูป

51 การลบ node ใน B-Tree ตัวอย่าง การลบข้อมูลใน B-Tree
กำหนดให้มีลำดับการลบข้อมูลคือ 52, 72, 69, 56 ใน B-Tree โดยกำหนดให้ m = 5 แสดงได้ดังนี้

52 การลบ node ใน B-Tree ลบข้อมูล 52: โดยนำ B-Tree ต้นแบบมาลบดังแสดงในรูป a เมื่อตรวจสอบข้อมูล 52 ที่ต้องการลบไม่ได้อยู่ในตำแหน่งใบต้องทำการสลับตำแหน่งข้อมูล 52 กับข้อมูลในตำแหน่งใบด้วยหลักการ Inorder successor คือข้อมูล 56 ดังแสดงในรูป (c) และทำการลบข้อมูล 52 ดังแสดงในรูป (d)

53 การลบ node ใน B-Tree ลบข้อมูล 72: นำ B-Tree ที่เพี่มข้อมูล 52 มาเป็นต้นแบบในการลบข้อมูล 72 เป็นข้อมูลที่อยู่ในตำแหน่งใบสามารถทำลบข้อมูล 72 ได้เลยดังแสดงในรูปที (b)

54 การลบ node ใน B-Tree ลบข้อมูล 69: นำ B-Tree เพิ่มข้อมูล 72 มาเป็นทรีต้นแบบในการลบข้อมูล ข้อมูล 69 อยู่ในตำแหน่งใบสามารถทำการลบข้อมูล 69 ได้ทันทีแต่เมื่อทำการลบข้อมูล 69 แล้วข้อมูลแม่มีลูกอยู่เพียง node เดียวซึ่งไม่เป็นตามกฎของ B-Tree ดังนั้นจึงทำการเลื่อนข้อมูลในลำดับพี่สองคือ <31, 43> มี 2 ข้อมูลดังนั้นจึงทำการเลื่อนข้อมูล 56 ลงมาแทนข้อมูล 69 และทำการเลือก 43 ขึ้นไปเป็น node รากแทน ดังแสดงในรูป (d)

55 การลบ node ใน B-Tree ลบข้อมูล 56: นำ B-Tree เพิ่มข้อมูล 69 มาเป็นต้นแบบ ข้อมูล 56 อยู่ในตำแหน่งใบสามารถลบข้อมูลได้ทันที แต่เมื่อลบไปแล้วแม่มีข้อมูลเพียงข้อมูลเดียวและเมื่อดู node ระดับพี่น้อง <31> มีเพียงข้อมูลเดียวดังนั้นต้องใช้หลักการเลื่อนข้อมูล 43 ไปร่วมกับ 31 ดังแสดงในรูปที่ (d)

56 Homework กำหนดข้อมูล จงสร้าง BST จากโครงสร้าง tree ในข้อ 1 จงหา preorder, inorder, postorder traversal จากข้อ 1. จงเพิ่มข้อมูลลงใน tree ตามลำดับ จากข้อ 2. จงลบข้อมูลลงใน tree ตามลำดับ แล้วแสดงลักษณะของ tree

57 Homework กำหนดข้อมูล จงสร้างเป็น AVL-tree 40, 22, 75, 31, 15, 9 69,45,77,32,91,47,95,99 54,44,50,62,32,47,52,45 35,46,23,53,40,37,44,39


ดาวน์โหลด ppt Trees (2) University of Phayao Sanchai Yeewiyom

งานนำเสนอที่คล้ายกัน


Ads by Google