1 / 38

โครงสร้างข้อมูลแบบต้นไม้

โครงสร้างข้อมูลแบบต้นไม้. นิยามของโครงสร้างต้นไม้. โครงสร้างข้อมูลแบบต้นไม้ มีคุณสมบัติดังนี้ 1. มีโหนดที่เรียกว่า รากหรือรูต (Root node) , R 2. โหนดที่ไม่ใช่รูตแบ่งย่อยออกเป็น n กลุ่ม โดยที่แต่ละกลุ่มไม่มีโหนด ร่วมกันเลย เช่น กลุ่ม T1 , T2 ,…..Tn (n >=0) แต่ละกลุ่มก็เป็น

zihna
Download Presentation

โครงสร้างข้อมูลแบบต้นไม้

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. โครงสร้างข้อมูลแบบต้นไม้โครงสร้างข้อมูลแบบต้นไม้

  2. นิยามของโครงสร้างต้นไม้นิยามของโครงสร้างต้นไม้ • โครงสร้างข้อมูลแบบต้นไม้ มีคุณสมบัติดังนี้ 1. มีโหนดที่เรียกว่า รากหรือรูต (Root node) , R 2.โหนดที่ไม่ใช่รูตแบ่งย่อยออกเป็น n กลุ่ม โดยที่แต่ละกลุ่มไม่มีโหนด ร่วมกันเลย เช่น กลุ่ม T1 , T2 ,…..Tn (n >=0) แต่ละกลุ่มก็เป็น ต้นไม้เหมือนกัน จะเรียกว่าต้นไม้ย่อย (Subtree)

  3. ลักษณะต้นไม้แบบรีเคอร์ซีฟลักษณะต้นไม้แบบรีเคอร์ซีฟ จากรูป R เป็นรูตของต้นไม้ย่อย A,B,C,D A เป็นรูตของต้นไม้ย่อย E,F,G F เป็นรูตของต้นไม้ย่อย J B เป็นรูตของต้นไม้ย่อย H และ I

  4. ชื่อส่วนต่างๆของต้นไม้ชื่อส่วนต่างๆของต้นไม้

  5. ระดับของโหนด (Level) • ระดับของโหนดหนึ่ง ๆ แสดงถึงหน่วยระยะทางตามแนวดิ่งของโหนดนั้นว่าอยู่ห่างจากรูตโหนดเท่าไร ถ้ากำหนดว่ารูตโหนดของต้นไม้นั้นอยู่ที่ระดับ 1 และกิ่งทุกกิ่งมีความยาวเท่ากัน หมดคือยาว 1 หน่วย เลขระดับของโหนดใด ๆ คือจำนวนกิ่งที่น้อยที่สุดจากรูตโหนดบวกหนึ่งเช่น F มีเลขระดับเป็น 4 เป็นต้น

  6. ดีกรีของโหนด (Level Degree) • ดีกรีของโหนดคือจำนวนต้นไม้ย่อยของโหนดนั้น จากรูป โหนด X มีดีกรี 1 โหนด A มีดีกรี 2 ส่วนโหนด H มีดีกรี 3 โหนด B มีดีกรี 1 และโหนด E มีดีกรี 0 เป็นต้น

  7. โหนดที่เป็นใบ(Leaf Node) • โหนดที่เป็นใบ หมายถึงโหนดที่มีดีกรีเป็น 0 เช่นโหนด C, D, E, J, F และ G ส่วนโหนดที่มีดีกรีไม่เท่ากับ 0 เรียกว่า โหนดภายใน หรือinterior nodeหรือ branch node

  8. Immediate Successor หรือ SON ของโหนด i • Immediate Successor คือโหนดทั้งหลายของต้นไม้ย่อย i ที่มีค่าระดับต่ำกว่าโหนด i อยู่หนึ่ง เช่น SON ของโหนด H คือโหนด E, I, และ F

  9. Immediate Predecessor หรือ father ของโหนด i • Immediate Predecessor คือโหนดที่มีค่าระดับสูงกว่าโหนด i อยู่หนึ่ง เช่น FATHER ของโหนด J คือโหนด I, FATHER ของโหนด I คือโหนด H เป็นต้น

  10. ต้นไม้แบบไบนารี (Binary Tree) • ต้นไม้ไบนารีเป็น rooted binary tree ที่ว่างเปล่า หรือประกอบด้วยรูตโหนดและต้นไม้ไบนารี 2 กลุ่มที่ไม่มีโหนดร่วมกัน แต่ละกลุ่มจะมีชื่อเรียก (โดยตำแหน่งที่อยู่หรือที่เขียน) ว่าต้นไม้ย่อยทางซ้าย (left subtree) และต้นไม้ย่อยทางขวา (right subtree) ตามลำดับคำว่า ว่างเปล่า ในนิยามหมายความว่า ต้นไม้ไบนารีต้นนั้นมีแต่รูตโหนดเพียงโหนดเดียวเท่านั้น

  11. (ข) (ก) (ค) รูป (ก), (ข) และ (ค) เป็นต้นไม้ไบนารี

  12. (ง) (ฉ) (จ) รูป (ง), (จ) และ (ฉ)ไม่ใช่ต้นไม้ไบนารี

  13. ต้นไม้ไบนารีแบบสมบูรณ์ (Complete Binary Tree) • ต้นไม้ไบนารีแบบสมบูรณ์ หมายถึงต้นไม้ไบนารีที่แต่ละโหนดภายในมีโหนดย่อยซ้ายและขวา (นั่นคือแต่ละโหนดภายในมี left son และ right son ) และโหนดใบ (leaf nodes) ทั้งหลายอยู่ในระดับที่ n รูป (ก) เป็นต้นไม้ไบนารีแบบสมบูรณ์ที่มี 3 ระดับ (ก)

  14. ต้นไม้ไบนารีแบบสมบูรณ์ที่มีโหนดใบอยู่ที่ระดับ n จะมีโหนดทั้งหมดเท่ากับ 2n-1 จากรูป จำนวนโหนดเท่ากับ 23-1 = 7โหนด

  15. การแทนต้นไม้ไบนารีในหน่วยความจำการแทนต้นไม้ไบนารีในหน่วยความจำ • ต้นไม้ไบนารีสามารถแทนได้ 2 แบบ คือ 1. การแทนโดยอาศัยพอยน์เตอร์ 2. การแทนโดยอาศัยแอดเดรสของโหนด หรือการแทนแบบ ซีเควนเชียล (sequential)

  16. การแทนโดยอาศัยพอยน์เตอร์การแทนโดยอาศัยพอยน์เตอร์ • ทำได้โดยให้แต่ละโหนดมีโครงสร้างดังรูปต่อไปนี้ DATA DATA หรือ LLINK RLINK LSON RSON โครงสร้างโหนดสำหรับต้นไม้ไบนารี LLINK หรือ LSON เป็นพอยน์เตอร์ชี้ไปยังต้นไม้ย่อยทางซ้าย ส่วน RLINK หรือ RSON เป็นพอยน์เตอร์ชี้ไปยังต้นไม้ย่อยทางขวา

  17. การแทนโดยอาศัยแอดเดรสของโหนด หรือการแทนแบบซีเควนเชียล • เป็นการแทนต้นไม้ไบนารีด้วยอาร์เรย์ 1 มิติอาร์เรย์เดียว การแทนแบบนี้เหมาะกับโครงสร้างต้นไม้ไบนารีแบบ complete binary tree ที่สุด การแทนจะเริ่มต้นด้วยการให้หมายเลขแก่แต่ละโหนด ตั้งแต่ระดับ 1 ระดับ 2 ...ไปเรื่อยๆ จนถึงระดับ k การให้ตัวเลขในแต่ละระดับจะให้จากซ้ายไปขวา โดยให้รูตโหนดมีหมายเลข 1 เสมอ การให้ตัวเลขจะต้องถือว่าต้นไม้ไบนารีเป็นต้นไม้ไบนารีแบบสมบูรณ์ จึงจะให้ตัวเลขที่อยู่แก่โหนดได้

  18. 1 A 3 2 B X 4 6 7 5 C D 13 11 8 14 15 9 10 12 E การให้แอดเดรสแก่ต้นไม้ไบนารีที่ถูกต่อเติมให้สมบูรณ์ 2 4 5 7 8 9 10 11 12 13 14 15 1 3 6 A B X C D - - E - - - - - - - รูปการแทนต้นไม้โดยใช้อาร์เรย์

  19. การเดินเข้าไปในโครงสร้างต้นไม้ (TreeTraversal) • การนำต้นไม้ไบนารีมาใช้ประโยชน์นั้น หมายความว่าต้องมีวิธี เดิน หรือ traverse เข้าไปในต้นไม้อย่างมีแบบแผน เพื่อไป เยี่ยม โหนดต่าง ๆโหนดละ 1 ครั้ง คำว่า เยี่ยม หมายถึงว่าเราจะไปยังโหนดเพื่อประมวลผลบางอย่างที่ต้องการกระทำกับโหนดนั้น เช่น หาข่าวสาร ดังนั้นผลลัพธ์จากการเดินเข้าไปในต้นไม้คือจะได้ข่าวสารที่เก็บ (หรือชี้) โดยโหนดเหล่านั้นออกมาในรูปเชิงเส้น ซึ่งนำไปใช้ประโยชน์ได้

  20. ความคิดเริ่มต้นของการเดินก็คือ เราต้องเยี่ยมแต่ละโหนดพร้อมทั้งต้นไม้ย่อยทางซ้าย และทางขวาของโหนดนั้น ตามแนวคิดนี้เราจะแยกต้นไม้ไบนารีออกเป็น 3 ส่วนคือ R, TL และTR โดยที่ R จะแทนรูตโหนด TL จะแทนต้นไม้ย่อยทางซ้าย และ TR จะแทนต้นไม้ย่อยทางขวา จะเห็นได้ว่าจะมีวิธีเดินอยู่ 6 ทางคือ RTL TR, TL RTR, TL TRR,TRTL R,TRRTL และ RTRTL

  21. มีวิธีเดิน 6 วิธี จะกล่าวเพียง 3 วิธีแรกเท่านั้น ซึ่ง 3 วิธีแรก มีชื่อเรียก พิเศษและลักษณะรายละเอียดการเดินดังนี้ (1) เดินแบบพรีออร์เดอร์ (pre-order traversal) - RTLTR - เยี่ยม R - เดินเข้าไปใน TL (ของ R) อย่างพรีออร์เดอร์ - เดินเข้าไปใน TR (ของ R) อย่างพรีออร์เดอร์

  22. (2) เดินแบบอินออร์เดอร์ (in-order traversal) - TLRTR - เดินเข้าไปใน TL (ของ R) อย่างอินออร์เดอร์ - เยี่ยม R - เดินเข้าไปใน TR (ของ R) อย่างอินออร์เดอร์ (3) เดินแบบโพสต์ออร์เดอร์ (post-order traversal) - TLTRR - เดินเข้าไปใน TL (ของ R) อย่างโพสต์ออร์เดอร์ - เดินเข้าไปใน TR (ของ R) อย่างโพสต์ออร์เดอร์ - เยี่ยม R

  23. A B C D E F G H I พรีออร์เดอร์ : ABDGCEHIF (RTLTR) อินออร์เดอร์ : DGBAHEICF (TL RTR) โพสต์ออร์เดอร์ : GDBHIEFCA (TLTR R)

  24. Jim Ron Dot Amy Kay Guy Tim Tom Ann Eva Jan Jon Kim Roy จงท่องเข้าไปในต้นไม้ แบบ 1.พรีออร์เดอร์ 2.อินออร์เดอร์ 3.โพสต์ออร์เดอร์

  25. + - A * D B C จงท่องเข้าไปในต้นไม้ แบบ 1.พรีออร์เดอร์ 2.อินออร์เดอร์ 3.โพสต์ออร์เดอร์

  26. Expression Tree เป็นต้นไม้แบบไบนารีที่ โหนดใบคือoperands, เช่นค่าคงที่หรือตัวแปร, และโหนดรากคือoperators จากรูปแสดง Expression tree ของ (a + b * c) + ((d * e + f ) * g)

  27. การสร้าง Expression Tree • อ่านสัญลักษณ์จากนิพจน์ที่ละตัวถ้าตัวที่อ่านมาเป็น operand ให้สร้างโหนดของ tree หนึ่งโหนดแล้ว push มันลงใน stack ถ้าตัวที่อ่านมาเป็น operator ให้ pop จาก stack 2 ครั้ง ซึ่งจะได้ trees T1และT2 (T1นำออกก่อน) แล้วให้นำมาสร้างเป็น tree ใหม่ที่มีราก (root) เป็นตัว operator และมี left และ right children เป็นT2และT1ตามลำดับจากนั้นให้ใส่ tree ใหม่นี้กลับลง stack

  28. ถ้าอินพุต คือ a b + c d e + * *

  29. Binary Search Trees • การประยุกต์ใช้ binary trees ที่สำคัญอย่างหนึ่ง คือ การใช้ในการค้นหาค่า • คุณสมบัติของ binary search tree คือ: 1. binary search tree เป็น binary tree, 2. ทุก ๆ โหนด, X, ใน tree, ค่าของ keys ทั้งหมดทาง left subtree จะต้องน้อยกว่าค่าของ key คือ X, และค่าทั้งหมดของ keys ทางด้าน right subtree ต้องมากกว่าค่าของ key คือ X

  30. ไม่เป็นBinary Serach Tree เป็นBinary Serach Tree

  31. การสร้าง Binary Search Tree • สร้าง binary searchจากข้อมูลต่ไปนี้ 10 , 5, 1, 100, 20 ,45, 3 ,19 10 5 100 1 20 45 3 19

  32. การลบโหนดออกจาก Binary Search Tree • เมื่อพบโหนดที่ต้องการลบออกแล้ว มีประเด็นที่ต้องพิจารณา ดังนี้ 1. ถ้าโหนดนั้นเป็น leaf ก็ลบออกได้ทันที 2. ถ้ามีลูก 1 โหนด, ก็ทำการปรับ pointer ของมันให้ข้ามโหนดที่จะลบนั้นแล้วจึงทำการลบ 3. ถ้าโหนดนั้นมีลูก 2 โหนด ก็ให้แทนที่ค่าของโหนดด้วยค่าที่น้อยที่สุดของ right subtree (หาพบได้ง่าย) และให้ทำการ delete โหนดนั้นในแบบ recursive เนื่องจากโหนดที่มีค่าน้อยที่สุดใน right subtree ย่อมไม่มี left child ดังนั้น การ remove ครั้งหลังจึงทำได้ง่าย

  33. ก่อนและหลัง การลบnode (4)ซึ่งมีchild1โหนด

  34. ก่อนและหลังการลบโหนด (2)ที่มีลูก 2โหนด

  35. A B D C G H E F K L I J แบบฝึกหัด 1. จากต้นไม้ไบนารีที่กำหนด ให้เขียนผลลัพธ์จากการท่องเข้าไปในต้นไม้ แบบPreorder ,Inorder , Postorder

  36. แบบฝึกหัด (ต่อ) 2. จงสร้าง Binary Search Treeจากข้อมูลดังนี้ 10, 8, 2, 4, 3, 15, 26, 30 ,17, 6 3. จงสร้าง Expression Treeจากนิพจน์ต่อไปนี้ 3.1(A - 2 * (B + C) – D * E) * F 3.2 A + (B – C) * D ^ ( E * F )

More Related