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

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

โครงสร้างข้อมูลทรีและไบ นารีทรี (Tree and Binary Tree)

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


งานนำเสนอเรื่อง: "โครงสร้างข้อมูลทรีและไบ นารีทรี (Tree and Binary Tree)"— ใบสำเนางานนำเสนอ:

1 โครงสร้างข้อมูลทรีและไบ นารีทรี (Tree and Binary Tree)

2 A BC NodeA, B, C BranchAB, AC NodeA, B, C BranchAB, AC Terminology ต้นไม้ (Tree) ประกอบด้วย ต้นไม้ (Tree) ประกอบด้วย 1.Node ใช้เก็บข้อมูล 2.Branch ใช้เชื่อม Node เข้าด้วยกัน

3 Degree หมายถึง จำนวน Branch ที่สัมพันธ์กับ Node แบ่งเป็นDegree หมายถึง จำนวน Branch ที่สัมพันธ์กับ Node แบ่งเป็น 1. Indegree หมายถึง Branch ที่เข้าหา Node 2. Outdegree หมายถึง Branch ที่ออกจาก Node A BC Node A มี Degree เท่ากับ 2 Indegree = 0 Outdegree = 2 Node A มี Degree เท่ากับ 2 Indegree = 0 Outdegree = 2

4 Root หมายถึง Node แรกของ TreeRoot หมายถึง Node แรกของ Tree A BC Root

5 ดังนั้นจะพบว่าต้นไม้ทั่วไป RootมีIndegree = อื่นๆมีIndegree = 1 0 RootมีOutdegree = อื่นๆมีOutdegree = N N

6 Leaf หมายถึง Node ที่มี Outdegree เท่ากับ 0Leaf หมายถึง Node ที่มี Outdegree เท่ากับ 0 A BC LeafB, C LeafB, C

7 Internal node หมายถึง Node ที่ไม่ใช่ Root และ LeafInternal node หมายถึง Node ที่ไม่ใช่ Root และ Leaf A BC DE RootA LeafD, E, C Internal nodeB RootA LeafD, E, C Internal nodeB

8 Parent หมายถึง Node ที่มี OutdegreeParent หมายถึง Node ที่มี Outdegree A BC DE ParentA, B ParentA, B

9 Child หมายถึง Node ที่มี IndegreeChild หมายถึง Node ที่มี Indegree A BC DE ChildB, C, D, E ChildB, C, D, E

10 Sibling หมายถึง Node ที่มี Parent เดียวกันSibling หมายถึง Node ที่มี Parent เดียวกัน A BC DE Sibling{B, C}, {D, E} Sibling{B, C}, {D, E}

11 Path หมายถึง เส้นทางจาก Node หนึ่งไปยังอีก Node หนึ่งPath หมายถึง เส้นทางจาก Node หนึ่งไปยังอีก Node หนึ่ง A BC DE Path จาก A ไป EA - > B -> E Path จาก A ไป EA - > B -> E **ทุก Node ใน Tree จะต้องมี Path เดียวเท่านั้น **

12 Ancestor หมายถึง ทุก Node ในเส้นทางจาก Root ไปยัง Node ที่ต้องการAncestor หมายถึง ทุก Node ในเส้นทางจาก Root ไปยัง Node ที่ต้องการ A BC DE Ancestor ของ E A, B Ancestor ของ E A, B

13 Descendent หมายถึง ทุก Node ในเส้นทาง จาก Node ที่กำหนดไปจนถึง LeafDescendent หมายถึง ทุก Node ในเส้นทาง จาก Node ที่กำหนดไปจนถึง Leaf A BC DE Descendent ของ A B, C, D, E Descendent ของ B D,E Descendent ของ A B, C, D, E Descendent ของ B D,E

14 Level หมายถึง ระยะทางจาก RootLevel หมายถึง ระยะทางจาก Root A BC DE Level 0 Level 1 Level 2

15 Height ของ Tree หมายถึง Level สูงสุด ของ Leaf บวกด้วย 1Height ของ Tree หมายถึง Level สูงสุด ของ Leaf บวกด้วย 1 Level 0 A BC DE Level 1 Level 2 Height = = 3 Height = = 3

16 ParentsChildrenSiblingsLeaves Internal nodes Ancestor of G Descendent of A HeightParentsChildrenSiblingsLeaves Internal nodes Ancestor of G Descendent of A Height A,B,F B,E,F,C,D,G,H,I {B,E,F}, {C,D}, {G,H,I} C,D,E,G,H,I B,F A,F B,E,F,C,D,G,H,I 3

17 Subtree หมายถึง โครงสร้างที่เชื่อมต่อกันภายใต้ Root โดยSubtree หมายถึง โครงสร้างที่เชื่อมต่อกันภายใต้ Root โดย –Node แรกของ Subtree จะเป็น Root ของ Subtree นั้น และใช้เป็นชื่อเรียก Subtree –Subtree สามารถแบ่งย่อยเป็น Subtree ได้ อีกจนกว่าจะ Empty

18

19 Tree Representation หมายถึง ลักษณะของการนำเสนอโครงสร้างข้อมูลทรี ซึ่งสามารถทำได้ 3 แบบ ดังนี้ 1.General Tree การนำเสนอแบบรูปภาพต้นไม้ 2.Indented List การนำเสนอโดยใช้การย่อหน้า 3.Parenthetical List การนำเสนอโดยใช้เครื่องหมายวงเล็บเหมือนนิพจน์

20 Indented List : ComputerCase...CPUControllerALU...ROM 3.5” Disk......CD-ROM... Indented List : Computer Case... CPU Controller ALU... ROM 3.5” Disk CD-ROM... Parenthetical List : Computer (Case(...)CPU(Controller ALU … ROM)3.5”Disk (... ) … CD/ROM(...)) Parenthetical List : Computer (Case(...)CPU(Controller ALU … ROM)3.5”Disk (... ) … CD/ROM(...)) General Tree ตัวอย่างที่ 1

21 Indented List : ABCDEFGHI Indented List : A B C D E F G H I Parenthetical List : A ( B ( C D ) E F ( G H I ) ) Parenthetical List : A ( B ( C D ) E F ( G H I ) ) ตัวอย่างที่ 2 General Tree

22 1. จากต้นไม้ต่อไปนี้ จงหา1.1 Root 1.2 Leaves 1.3 Internal nodes 1.4 Ancestors of H 1.5 Descendents of F แบบฝึกหัด

23 2. จากต้นไม้ต่อไปนี้ จงหา2.1 Indegree of node F 2.2 Outdegree of node B 2.3 Siblings of H 2.4 Parent of K 2.5 Children of C

24 3. จากต้นไม้ต่อไปนี้ จงหา3.1 Height of the tree 3.2 Height of node G 3.3 Level of node G 3.4 Level of node A 3.5 Height of node E

25 4. จงแสดง Subtree ต่าง ๆ ของโหนด F ของต้นไม้ ต่อไปนี้

26 5. จงนำเสนอต้นไม้ต่อไปนี้โดยใช้รูปแบบ Indented List

27 6. จงนำเสนอต้นไม้ต่อไปนี้โดยใช้รูปแบบ Parenthetical List

28 7. จงเปลี่ยนรูปแบบการนำเสนอต้นไม้ต่อไปนี้ให้อยู่ ในรูปแบบต้นไม้ทั่วไป a ( b ( c d ) e f ( g h ) )

29 Binary Tree หมายถึง ต้นไม้ที่แต่ละ Node มี Subtree <= 2 หรือ Outdegree <= 2

30 ตัวอย่างBinary Tree

31 Emptyหรือ Null Tree

32 Height of Binary Tree คำถามที่ 1 มี Node อยู่ทั้งหมด 7 Nodes 1.1 จะสร้าง Tree ให้มี Height สูงสุดได้เท่าไร อย่างไร 1.2 จะสร้าง Tree ให้มี Height ต่ำสุดได้เท่าไร อย่างไร H max =N H min =log 2 N + 1 H max =N H min =log 2 N + 1

33 คำถามที่ 2 Tree ที่มี Height = จะมี Node สูงสุดได้เท่าไร อย่างไร 2.2 จะมี Node ต่ำสุดได้เท่าไร อย่างไร N max =2 H - 1 N min =H N max =2 H - 1 N min =H

34 Balance Binary Tree จะ Balance เมื่อทุก ๆ Subtree มี Balance Factor เท่ากับ 0 Balance Factor = H L - H R

35 B = 0B = 0 B = 1-0 = 1B = 0-1 = -1 B = 0-2 = -2 B = 2-1 = 1 B = 2-0 = 2 B = 1-1 = 0 B = 0B = 0 B = 0B = 0B = 0B = 1-1 = 0 B = 0B = 0 B = 0-1 = -1 B = 0 B = 1-0 = 1 B = 0 Balance

36 Complete Binary Tree Binary Tree ที่มี Node เต็มทุก Level Nearly Complete Binary Tree Binary Tree ที่มี Node เต็มทุก Level ยกเว้น Level สุดท้าย และ Node ใน Level สุดท้ายอยู่เรียง กันทางซ้ายมือ

37 ตัวอย่าง Complete และ Nearly Complete Binary Tree

38 Binary Tree Traversal 1.Depth-first Descendent ทั้งหมดของ Child จะต้องถูก ประมวลผลก่อน Child ถัดไป 2.Breath-first ประมวลผลทีละ Level จากบนลงล่าง

39 N L R L N R L R N 1. Depth-first แบ่งเป็นทั้งหมด 6 แบบแต่มี 3 แบบที่นิยมใช้ ได้แก่

40 แบบ Preorder N L R algorithm preOrder (val root ) 1 if (root is not null) 1 process(root) 1 process(root) 2 preOrder(root->leftSubtree) 2 preOrder(root->leftSubtree) 3 preOrder(root->rightSubtree) 3 preOrder(root->rightSubtree) 2 return

41 แบบ Inorder L N R algorithm inOrder (val root ) 1 if (root is not null) 1 inOrder(root->leftSubtree) 1 inOrder(root->leftSubtree) 2 process(root) 2 process(root) 3 inOrder(root->rightSubtree) 3 inOrder(root->rightSubtree) 2 return

42 แบบ Postorder L R N algorithm postOrder (val root ) 1 if (root is not null) 1 postOrder(root->leftSubtree) 1 postOrder(root->leftSubtree) 2 postOrder(root->rightSubtree) 2 postOrder(root->rightSubtree) 3 process(root) 3 process(root) 2 return

43 algorithm breathFirst (val root ) 1 p = root 2 while (p not null) 1 process(p) 1 process(p) 2 if (p->left not null) 2 if (p->left not null) 1 enqueue(p->left) 1 enqueue(p->left) 3 if (p->right not null) 3 if (p->right not null) 1 enqueue(p->right) 1 enqueue(p->right) 4 if (not emptyQueue) 4 if (not emptyQueue) 1 dequeue(p) 1 dequeue(p) else else 1 p = null 1 p = null 3 return 2. Breath-first

44 แบบฝึกหัด 1. จากต้นไม้ต่อไปนี้ จงหาลำดับการประมวลผล แบบ Depth-first ทั้งหมด

45 2. จากต้นไม้ต่อไปนี้ จงหาลำดับการประมวลผล แบบ Breath-first

46 Binary Tree Application 1.Expression Tree 2.Huffman Code

47 1. Expression Tree หมายถึง Binary Tree ที่มีคุณสมบัติดังต่อไปนี้ 1.Leaf เก็บ Operand 2.Root และ Internal node เก็บ Operator 3.Subtree เป็น Subexpression

48 ตัวอย่าง

49 การท่องใน Expression Tree 1.Preorder Traversal 2.Postorder Traversal 3.Inorder Traversal Prefix Expression Postfix Expression Infix Expression

50 1. Preorder Traversal + * a + b c d 1 if (root is not null) 1 print(root->token) 1 print(root->token) 2 prefix(root->leftSubtree) 2 prefix(root->leftSubtree) 3 prefix(root->rightSubtree) 3 prefix(root->rightSubtree) 2 return

51 2. Postorder Traversal a b c + * d + 1 if (root is not null) 1 postfix(root->leftSubtree) 1 postfix(root->leftSubtree) 2 postfix(root->rightSubtree) 2 postfix(root->rightSubtree) 3 print(root->token) 3 print(root->token) 2 return

52 3. Inorder Traversal 1 if (root is not null) 1 if root->token is operand 1 if root->token is operand 1 print(root->token) 1 print(root->token) else else 1 print(open parenthesis) 1 print(open parenthesis) 2 infix(root->leftSubtree) 2 infix(root->leftSubtree) 3 print(root->token) 3 print(root->token) 4 infix(root->rightSubtree) 4 infix(root->rightSubtree) 5 print(close parenthesis) 5 print(close parenthesis) 2 return ( ( a * ( b + c ) ) + d )

53 การสร้าง Expression Tree จาก Postfix Expression พิจารณาทีละ Token จนหมด ถ้า Token เป็น Operandถ้า Token เป็น Operand สร้าง Node แล้ว Push ลง Stack ถ้า Token เป็น Operatorถ้า Token เป็น Operator Pop ขึ้นมา 2 ตัวเชื่อมเป็น Tree โดยใช้ Operator แล้ว Push ลง Stack

54 ตัวอย่าง จากนิพจน์ Postfix a b c + * d + จะได้ Expression Tree ดังนี้

55 แบบฝึกหัด 1.จงแสดง Expression Tree จากนิพจน์ Postfix ที่กำหนดให้ พร้อมทั้งหานิพจน์ Infix และ นิพจน์ Prefix จาก Expression Tree ที่ได้ A B * C D / + E F - *

56 2.จงแสดง Expression Tree จากนิพจน์ Infix ที่กำหนดให้ พร้อมทั้งหานิพจน์ Prefix และ นิพจน์ Postfix จาก Expression Tree ที่ได้ (C + D + A * B) * (E + F)

57 General Tree หมายถึง Tree ที่สามารถมี Outdegree ได้ ไม่จำกัดจำนวน

58 การแปลง General Tree เป็น Binary Tree มี 3 ขั้นตอน ดังนี้ 1.ระบุ Child ที่อยู่ทางซ้ายสุด 2.เชื่อม Sibling เข้าด้วยกัน 3.ลบ Branch ที่ไม่ต้องการ

59 ตัวอย่าง การแปลง General Tree เป็น Binary Tree

60 Bill John JosepMary Smith RoseJackBrianMaySarah BenTom JayJimJoeyJoe แบบฝึกหัด จงแปลงต้นไม้ต่อไปนี้เป็น Binary Tree


ดาวน์โหลด ppt โครงสร้างข้อมูลทรีและไบ นารีทรี (Tree and Binary Tree)

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


Ads by Google