The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

บทที่ 5 tree and Binary Tree 4

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by kafare77, 2021-07-19 05:48:16

บทที่ 5 tree and Binary Tree 4

บทที่ 5 tree and Binary Tree 4

1. Depth-first

แบ่งเป็นท้งั หมด 6 แบบแต่มี 3 แบบที่นิยมใช้ ไดแ้ ก่

NLR LNR LRN

51

แบบ Preorder

NLR

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

52

แบบ Inorder

LNR

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

53

แบบ Postorder

LRN

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

54

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

55

Binary Tree Application

1. Expression Tree
2. Huffman Code

56

Binary Tree กบั นิพจนค์ ณิตศาสตร์

+
A*

BC

InOrder : A + B * C
PreOrder : +A*BC
PostOrder : ABC*+

57

Binary Tree กบั นิพจนค์ ณิตศาสตร์

* C
+

AB

InOrder : (A + B) * C
PreOrder : *+ABC
PostOrder : AB+C*

58

Binary Tree กบั นิพจนค์ ณิตศาสตร์

+

A*

-^

B CD *

E F

InOrder : A + (B - C) * (D ^ (E * F))
PreOrder : +A*-BC^D*EF
PostOrder : ABC-DEF*^*+

59

Binary Tree กบั นิพจนค์ ณิตศาสตร์

^ C

+*

A *+

B CA B

InOrder : (A + B * C) ^ ((A + B) * C)
PreOrder : ^+A*BC*+ABC
PostOrder : ABC*+AB+C*^

60

Binary Tree กบั นิพจนค์ ณิตศาสตร์

+
A*

BC

InOrder : A + B * C
PreOrder : +A*BC
PostOrder : ABC*+

61

Binary Tree กบั นิพจนค์ ณิตศาสตร์

* C
+

AB

InOrder : (A + B) * C
PreOrder : *+ABC
PostOrder : AB+C*

62

Binary Tree กบั นิพจนค์ ณิตศาสตร์

+

A*

-^

B CD *

E F

InOrder : A + (B - C) * (D ^ (E * F))
PreOrder : +A*-BC^D*EF
PostOrder : ABC-DEF*^*+

63

Binary Tree กบั นิพจนค์ ณิตศาสตร์

^ C

+*

A *+

B CA B

InOrder : (A + B * C) ^ ((A + B) * C)
PreOrder : ^+A*BC*+ABC
PostOrder : ABC*+AB+C*^

64

แบบฝึ กหดั

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

แบบ Pre-Order (NLR) ได้แก่ A ,B,C,D,E,F,G,H,I,J,K
แบบ In-Order(LNR) ได้แก่ D,C, E, B, A, F, H, G, I,J,K
แบบ Post-Order(LRN) ได้แก่ D,E,C, B,H,K,J,I,G,F,A

65

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

66

1. Expression Tree

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

67

ตวั อย่าง

68

การท่องใน Expression Tree

1. Pre-order Traversal Prefix Expression
2. Post-order Traversal Postfix Expression
3. In-order Traversal Infix Expression

69

1. Preorder Traversal

1 if (root is not null)
1 print(root->token)
2 prefix(root->leftSubtree)
3 prefix(root->rightSubtree)
2 return

+*a+bcd

70

2. Postorder Traversal

1 if (root is not null)
1 postfix(root->leftSubtree)
2 postfix(root->rightSubtree)
3 print(root->token)
2 return

a bc+*d+

71

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

72

การสร้าง Expression Tree จาก Postfix
Expression

พจิ ารณาทีละ Token จนหมด
 ถา้ Token เป็น Operand

สร้าง Node แลว้ Push ลง Stack
 ถา้ Token เป็น Operator

Pop ข้ึนมา 2 ตวั เชื่อมเป็น Tree โดยใช้ Operator
แลว้ Push ลง Stack

ตวั อยา่ ง

จากนิพจน์ Postfix
abc+*d+

จะได้ Expression Tree ดงั น้ี

74

แบบฝึ กหดั

1. จงแสดง Expression Tree แบบ Infix

A* B / C + D – ( E+ F ) + (H-I)
พร้อมท้งั Tree traversal แบบ

In-Order, Pre-Order, Post-Order และ Breath-first

75

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

76

1. (100-2*(4+12)-1*5)*3

2. 7-3*4/2^2+5-(8^2/3*9)
3. 20-10*(8/2+4-3^2)+7
4. 23*2/3^3-(4+6*5+9/2^2)

77

(100-2*(4+12)-1*5)*3

78

 A* B / C + D – ( E+ F ) + (H-I)

79

General Tree

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

80

การแปลง General Tree เป็น Binary Tree

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

81

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

Binary Search Tree

 มีคุณสมบตั ิเป็น Binary Tree โดยท่ี 5
8
 ลูกทางซา้ ยตอ้ งนอ้ ยกวา่ Parent
 ลูกทางขวาตอ้ งมากกวา่ Parent 7 11
 ถา้ ขอ้ มูลซ้า จะไม่เกบ็

2

83

การใส่ข้อมูลใน Binary Search Tree 84

15 5 12 20 3 18 10 19

15
5 20

3 12 18
10 19

 นกั ศึกษาจะพบวา่ ทุก Node ทาง Left Sub Tree จะนอ้ ยกวา่ Root
 ทุก Node ทาง Right Sub Tree จะมากกวา่ Root

15 5 12 20 3 18 10 19

85

คุณลกั ษณะของ Binary Search Tree

 ในการคน้ หาขอ้ มูล ทาไดเ้ ร็ว คือไม่เกิน Height+1 (ความสูงของ tree+1) เช่น

 Tree น้ี Height = 3 สมมุติวา่ ตอ้ งการหาวา่ 19 มีหรือไม่
 จะใชจ้ านวนคร้ังในการหา = 4 คร้ัง คือท่ี Node 15, 20, 18, 19

15

5 20

3 12 18

10 19 86

Binary Search Tree

87

นิยามของโครงสร้างข้อมลู Binary Search Tree

 ทุกโหนดที่อย่ทู างด้าน sub-tree ด้านซ้ายจะต้องมีค่าน้อยกว่า
root

 ทุกโหนดท่ีอย่ทู างด้าน sub-tree ด้านขวา จะต้องมีค่ามากกว่า
หรือเท่ากบั root

 แต่ละ sub-tree จะต้องมีคณุ สมบตั ิตามข้อ 1 และ 2

88

ตวั อย่าง binary search tree

5 L<N<R 5
9
(a) 12 32
7 20 24
5
28 15 43 (d)

(b) (c) 89

ตวั อย่าง binary tree
ท่ีไม่จดั ว่าเป็น binary search tree

2 12 1
7 20 18
48
15 43 24 32
(a) 5
(c)
(b) 90

การดาเนินการของ binary search tree

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

91

92

93

Lซา้ ยสุดของยอ่ ย R Rขวาสุดของโหนดลบ

94

95

96

แหล่งความรู้เพม่ิ เตมิ

Animated Binary Search Tree 1 Animated Binary Search Tree 2

http://www.cs.jhu.edu/~goodrich/dsa/trees/b http://www.qmatica.com/DataStructures/Trees/B
tree.html ST.html

97

แบบฝึ กหดั

จงแปลงตน้ ไมต้ ่อไปน้ีเป็น Binary Tree

Bill

John Josep Mary
Smith
Rose Jack Brian May Sarah

Jay Jim Joe Joey Ben Tom

98

จงแปลงให้อย่ใู นรปู binary search tree และ ทาการค้นหา ทงั้ 3
วิธี MOD 5

 56 20 6 90 35 49 43 70 85 67
 77 67 43 23 6 92 39 25 49 80

ลบ 39,77

 39 40 2 7 8 80 75 60 78 4 25
(ลบ 7 , 40,39)

99

100


Click to View FlipBook Version