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

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

Binary Search Tree สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ. เลาขวัญ งามประสิทธิ์

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


งานนำเสนอเรื่อง: "Binary Search Tree สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ. เลาขวัญ งามประสิทธิ์"— ใบสำเนางานนำเสนอ:

1 Binary Search Tree สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ. เลาขวัญ งามประสิทธิ์

2 นิยามของโครงสร้างข้อมูล Binary Search Tree • ทุกโหนดที่อยู่ทางด้าน sub-tree ด้านซ้าย จะต้องมีค่าน้อยกว่า root • ทุกโหนดที่อยู่ทางด้าน sub-tree ด้านขวา จะต้องมีค่ามากกว่าหรือเท่ากับ root • แต่ละ sub-tree จะต้องมีคุณสมบัติตามข้อ 1 และ 2

3 ตัวอย่าง binary search tree 5 5 28 12 7 20 1543 5 9 32 24 (a) (b) (c) (d)

4 ตัวอย่าง binary tree ที่ไม่จัดว่าเป็น binary search tree 5 12 720 1543 1 18 32 24 (a) (c) 2 48 (b)

5 การดำเนินการของ binary search tree •Traversal ท่องไปใน binary search tree เหมือนกับการท่องใน binary tree คือ - Preorder - Inorder - Postorder •Search ค้นหาโหนดที่ต้องการ •Insert แทรกโหนด •Delete ลบโหนด

6 Inorder Traversal •Inorder-tree(x) 1.If x != NULL 2. then Inorder-tree(left of x) 3. print x 4. Inorder-tree(right of x)

7 Preorder Traversal •Preorder-tree(x) 1.If x != NULL 2. then print x 3. Preorder-tree(left of x) 4. Preorder-tree(right of x)

8 Postorder Traversal •Postorder-tree(x) 1.If x != NULL 2. then Postorder-tree(left of x) 3. Postorder-tree(right of x) 4. print x

9 การลบโหนดออกจาก Tree 1. กรณีที่โหนดนั้นเป็น leaf สามารถลบออกได้ เลย 2. กรณีที่โหนดนั้นมี 1 child 3. กรณีที่โหนดนั้นมี 2 children

10 การลบโหนดออกจาก Tree: กรณีที่โหนดนั้นมี 1 child 12 7 20 15 12 7 20 15 beforeafter

11 การลบโหนดออกจาก Tree: กรณีที่โหนดนั้นมี 2 child before after 12 7 20 1543 15 7 20 43 Replace the key of this node with the smallest key of right subtree. 12 7 20 1543

12 แหล่งความรู้เพิ่มเติม Animated Binary Search Tree 1 http://www.cs.jhu.edu/~goodri ch/dsa/trees/btree.html Animated Binary Search Tree Animated Binary Search Tree 2 http://www.qmatica.com/DataStru ctures/Trees/BST.html

13 AVL Tree สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ. เลาขวัญ งามประสิทธิ์

14 นิยามของ AVL Tree •Tree นั้นจะต้องเป็น binary search tree •Tree นั้นจะต้องเป็น Balanced tree Balanced tree หมายถึง ทุกโหนดใน tree ต้องมีความสูงของ left sub-tree และ right sub- tree ต่างกันไม่เกิน 1 Balance Factor = |H L – H R |  1

15 เกิด Imbalance ที่โหนด 12 ดังนั้น tree นี้ไม่เป็น AVL Tree ตัวอย่างการตรวจสอบ AVL Tree 5 12 720 1543 Node5 H L = 0, H R = 0  BF = |0 - 0| = 0 Node15 H L = 1, H R = 0  BF = |1 - 0| = 1 Node43 H L = 0, H R = 0  BF = |0 - 0| = 0 Node20 H L = 2, H R = 1  BF = |2 - 1| = 1 Node7 H L = 0, H R = 0  BF = |0 - 0| = 0 Node12 H L = 1, H R = 3  BF = |1 - 3| = 2 2 1 10 0 0

16 พิจารณาว่า Tree ต่อไปนี้เป็น AVL Tree หรือไม่ 1 11 324 1834 13 86 1 0 110 1 0 0 เป็น AVL Tree

17 พิจารณาว่า Tree ต่อไปนี้เป็น AVL Tree หรือไม่ 8 25 1443 3256 29 74 3 81 41 72 1 1 0 2 1 2 0 0 0 0 00 ดังนั้น ไม่เป็น AVL Tree เกิด Imbalance ที่โหนด 14 และ 56

18 Unbalanced Tree •Left of Left •Right of Right •Right of Left •Left of Right

19 Left of Left • เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่ง ซ้ายของโหนดลูกทางซ้าย 3 11 524 7 2 3 11 524 7 2 เกิด Imbalance

20 Right of Right • เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่ง ขวาของโหนดลูกทางขวา 15 11 524 45 82 15 11 524 45 82 เกิด Imbalance

21 Right of Left • เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่ง ขวาของโหนดลูกทางซ้าย 3 11 524 10 6 3 11 524 10 6 เกิด Imbalance

22 Left of Right • เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่ง ขวาของโหนดลูกทางซ้าย 15 11 524 45 18 15 11 524 45 18 เกิด Imbalance

23 การทำ Balancing Tree •Single rotation การหมุน 1 ครั้ง ใช้กรณีเกิด Left of Left และ Right of Right •Double rotation การหมุน 2 ครั้ง ใช้กรณีเกิด Right of Left และ Left of Right

24 Single rotation : rotate right A C B A C B Rotate Right เกิด Imbalance

25 ตัวอย่าง 11 5 24 11 524 10 212 28 56 49 30 10 212 28 56 49 30

26 ตัวอย่าง 3 11 524 7 2 2 5 311 7 24 Rotate Right

27 Single rotation : rotate left C A B C A B Rotate Left เกิด Imbalance

28 ตัวอย่าง 5 27 13 20 26 38 5 27 13 38 26 20 12 20 4 12 204

29 ตัวอย่าง 15 11 524 45 82 5 24 1145 8215

30 Double rotation : left of right N3 N2 P ON N1 M N2 M NO N3 P เกิด Imbalance

31 ตัวอย่าง 15 11 524 45 18 15 1124 45 5

32 Double rotation : right of left N3 N2 P O Rotate Right N N1 M N3 N2 P ON N1 M เกิด Imbalance

33 ตัวอย่าง 3 11 524 10 6 3 511 624

34 ตัวอย่าง algorithm : rotate left

35 จงสร้าง AVL Tree จากข้อมูลที่ นำเข้ามาตามลำดับดังต่อไปนี้ โดย ให้แสดงผล Balance Factors ด้วย 1)23, 54, 34, 2, 14, 7, 26, 16, 87, 21, 9 2)5, 23, 57, 8, 12, 45, 21, 36, 28, 4, 22, 13, 27

36 แหล่งความรู้เพิ่มเติม Animated AVL Tree 1 http://www.cs.jhu.edu/~goodric h/dsa/trees/avltree.html Animated AVL Tree 2 http://www.qmatica.com/DataStructu res/Trees/AVL/AVLTree.swf


ดาวน์โหลด ppt Binary Search Tree สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ. เลาขวัญ งามประสิทธิ์

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


Ads by Google