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

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

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

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


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

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

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

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

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

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

6 Leaf หรือ External node หมายถึง Node ที่มี Outdegree เท่ากับ 0
B C Leaf B, C

7 Root A Leaf D, E, C Internal node B
Internal node หมายถึง Node ที่ไม่ใช่ Root และ Leaf A B C D E Root A Leaf D, E, C Internal node B

8 Parent หมายถึง Node ที่มี Outdegree
B C D E Parent A, B

9 Child หมายถึง Node ที่มี Indegree
A B C D E Child B, C, D, E

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

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

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

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

14 Level หมายถึง ระยะทางจาก Root
A B C D E Level 1 Level 2

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

16 Depth ของ Node หมายถึง ความยาวของ path จาก root node ถึง node นั้น ดังนั้น root node จึงมีความลึก (Depth) เป็น 0 Depth ของ Tree หมายถึง ความลึกของ leaf node ที่อยู่ลึกที่สุด ซึ่งจะมีค่าเท่ากับความสูงของ tree เสมอ

17 Parents Children Siblings Leaves 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

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

19 Subtree

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

21 2. จากต้นไม้ต่อไปนี้ จงหา. 2. 1 Indegree of node F. 2
2. จากต้นไม้ต่อไปนี้ จงหา 2.1 Indegree of node F Outdegree of node G 2.3 Siblings of I 2.4 Parent of G 2.5 Children of C

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

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

24 ตัวอย่าง Binary Tree

25 Empty หรือ Null Tree

26 จำนวนเต็มที่มากที่สุดที่น้อยกว่าหรือเท่ากับ log2N
Height of Binary Tree คำถามที่ 1 มี Node อยู่ทั้งหมด 7 Nodes 1.1 จะสร้าง Tree ให้มี Height สูงสุดได้เท่าไร อย่างไร 1.2 จะสร้าง Tree ให้มี Height ต่ำสุดได้เท่าไร อย่างไร Hmax = N Hmin = log2N + 1 จำนวนเต็มที่มากที่สุดที่น้อยกว่าหรือเท่ากับ log2N

27 Nmin = H คำถามที่ 2 Tree ที่มี Height = 3
2.1 จะมี Node สูงสุดได้เท่าไร อย่างไร 2.2 จะมี Node ต่ำสุดได้เท่าไร อย่างไร Nmax = 2H - 1 Nmin = H

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

29 Complete และ Nearly Complete Binary Tree

30 This association suggests that a complete binary tree can be implemented with an array:
F G L [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

31 A B C D E R S F G L [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

32 A B C D E R S F G L [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

33 A B C D E R S F G L [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

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

35 1. Depth-first N L R L N R L R N

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

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

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

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

40 แบบฝึกหัด 1. จากต้นไม้ต่อไปนี้ จงหาลำดับการประมวลผลแบบ Depth-first ทั้งหมด A B C D E R S F G L

41 2. จากต้นไม้ต่อไปนี้ จงหาลำดับการประมวลผลแบบ Breath-first
B C D E R S F G L

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

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

44 ตัวอย่าง

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

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

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

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

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

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

51 แบบฝึกหัด จงแสดง Expression Tree จากนิพจน์ Postfix ที่กำหนดให้ A B * C D / + E F - *

52 2. Huffman Code Problem บีบอัด file โดยไม่ให้เสียข้อมูลไปเลยได้อย่างไร ให้ M เป็น ข้อมูลที่เราต้องการบีบอัด สมมติว่ามันมีขนาด 100,000 characters ซึ่งประกอบไปด้วยตัวอักษร a ถึง e เท่านั้น สมมติให้ 1 character ใช้ 1 byte (8 bits) ฉะนั้น 100,000 characters ใช้ 800,000 bits เราสามารถลดจำนวน bits ที่ใช้แต่ละตัวอักษรได้หรือไม่?

53 ดังนั้น จำนวน bits ที่ใช้จะลดลงเหลือ 300,000 bits
เนื่องด้วยมีตัวอักษรเพียง 5 ตัว ดังนั้น สมมติให้ 1 character ใช้ 3 bits ในเมื่อเรารู้ว่ามีแค่ไม่กี่จำนวน เราก็กำหนดโค้ดเองได้ดังในแผ่นใส ดังนั้น จำนวน bits ที่ใช้จะลดลงเหลือ 300,000 bits

54 จำนวน bits ที่ใช้จะลดลง
ถ้าลดจำนวนบิตลงอีก จะเห็นว่า จำนวน bits ที่ใช้จะลดลง แต่สมมติข้อมูล สามารถเป็นได้ทั้ง aababa หรือ cbda ก็ได้ !! อย่างนี้ถึงจะ compress ได้ แต่ก็ไม่มีทางตีความกลับคืนได้ เพราะความหมายไม่แน่นอน

55 ใช้ Huffman Code เป็นรหัสแทนตัวอักษรที่แต่ละตัวอักษรมีความยาวของรหัสแตกต่างกัน โดย ตัวอักษรที่ใช้บ่อย จะมีขนาดสั้น ตัวอักษรที่ใช้น้อย จะมีขนาดยาว ทั้งนี้เพื่อทำให้ข้อมูลมีขนาดเล็กลง

56 ตัวอย่าง การสร้าง Huffman Tree เพื่อหา Huffman Code
สมมติให้

57

58

59

60 1 ดังนั้นจะได้ a 00001 b 00000 c 0001 d 011 e 010 f 001 g 11 h 10 1 1 1 1 1 1

61 แบบฝึกหัด กำหนดความถี่ของการใช้งานตัวอักษรต่าง ๆ ดังนี้
A = 30% C = 15% E = 25% B = 15% D = 10% F = 5% จงสร้าง Huffman Code แทนตัวอักษรดังกล่าว

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

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

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


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

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


Ads by Google