51
บบบบบ บบบบบ 7 7 บบบ บบบ ( ( Trees Trees ) ) ( ( บบบบบบบ บบบบบบบ 1) 1) By Juthawut By Juthawut Chantharamalee Chantharamalee 1 ววววววววววววววววววว ววววววววววววววววววว ( ( Data Data Structure) Structure) วววว วววว 4122202 4122202

บทที่ 7 ทรี ( Trees ) (ส่วนที่ 1)

Embed Size (px)

DESCRIPTION

บทที่ 7 ทรี ( Trees ) (ส่วนที่ 1). By Juthawut Chantharamalee. แนวคิดพื้นฐานของทรี ( Basic Tree Concepts). - PowerPoint PPT Presentation

Citation preview

Page 1: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

บทท่ี บทท่ี 7 7 ทร ีทร ี((TreesTrees))

((สว่นท่ี สว่นท่ี 1)1)

By Juthawut By Juthawut ChantharamaleeChantharamalee 11วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

Page 2: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

แนวคิดพื้นฐานของทร ีแนวคิดพื้นฐานของทร ี((Basic Basic Tree Concepts) Tree Concepts) โครงสรา้งขอ้มูลแบบทรเีป็นโครงสรา้งท่ีมคีวามโครงสรา้งขอ้มูลแบบทรเีป็นโครงสรา้งท่ีมคีวามสมัพนัธใ์นลักษณะลำาดับชัน้ โดยสมาชกิแต่ละโหนด สมัพนัธใ์นลักษณะลำาดับชัน้ โดยสมาชกิแต่ละโหนด ((NodeNode ) ) ล้วนแต่มคีวามสมัพนัธใ์นลักษณะเหมอืนล้วนแต่มคีวามสมัพนัธใ์นลักษณะเหมอืนครอบครวัเดียวกัน โดยมโีหนดพอ่ ครอบครวัเดียวกัน โดยมโีหนดพอ่ ((ParentParent ) ) ท่ีอยู่ท่ีอยู่ระดับเหนือกวา่ มเีสน้เชื่อมไปยงัโหนดลกู ระดับเหนือกวา่ มเีสน้เชื่อมไปยงัโหนดลกู ((ChildChild ) )โดยท่ีโหนดลกูตัง่แต่สองโหนดหรอืมากกวา่ท่ีมาจากโดยท่ีโหนดลกูตัง่แต่สองโหนดหรอืมากกวา่ท่ีมาจากพอ่เดียวกันจะเรยีกวา่โหนดพีน่้อง พอ่เดียวกันจะเรยีกวา่โหนดพีน่้อง ((SiblingsSiblings ) )สำาหรบัความสมัพนัธอ่ื์นๆ เชน่ บรรพบุรุษ สำาหรบัความสมัพนัธอ่ื์นๆ เชน่ บรรพบุรุษ ((AncestorAncestor ) ) หรอืลกูหลาน หรอืลกูหลาน (Descendent) (Descendent) โหนดโหนดต่างๆ ภายในทรจีะอยูใ่นระดับ ต่างๆ ภายในทรจีะอยูใ่นระดับ ((LevelLevel ) ) ท่ีแตกต่างกันท่ีแตกต่างกัน

22วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

Page 3: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

33วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 71. ทร ี(Trees)

Level 0 A

Level 1

Level 2

EB

C D

F

HG I

Root

Branch AF

Branch FI

Page 4: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

44วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 72 ซบัทร ี(Subtree)

A

EB

C D

F

HG I

Subtree B

Root of

Subtree I

Page 5: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

รูปแบบการนำาเสนอรูปแบบการนำาเสนอโครงสรา้งขอ้มูลทร ี โครงสรา้งขอ้มูลทร ี ((Tree Tree Representation) Representation) เราสามารถนำาเสนอโครงสรา้งขอ้มูลทรใีห้เราสามารถนำาเสนอโครงสรา้งขอ้มูลทรใีห้

แตกต่างกันได้ถึง แตกต่างกันได้ถึง 3 3 รูปแบบด้วยกันคือรูปแบบด้วยกันคือ

55วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202

1. 1. แบบโครงสรา้งทรทัีว่ไป แบบโครงสรา้งทรทัีว่ไป ((General Tree) General Tree)

เป็นรูปแบบการนำาเสนอเหมอืนกับเป็นรูปแบบการนำาเสนอเหมอืนกับผังองค์กรทัว่ไปท่ีลดหลัน่เป็นลำาดับขัน้ ผังองค์กรทัว่ไปท่ีลดหลัน่เป็นลำาดับขัน้ ซึ่งรูปแบบดังกล่าว ถือวา่เป็นรูปแบบซึ่งรูปแบบดังกล่าว ถือวา่เป็นรูปแบบของทรท่ีีนิยมใชง้านโดยทัว่ไป โดยของทรท่ีีนิยมใชง้านโดยทัว่ไป โดยตัวอยา่งแสดงไวด้ังรูปท่ี ตัวอยา่งแสดงไวด้ังรูปท่ี 73. ( 73. (aa))

Page 6: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

เป็นรูปแบบท่ีคล้ายกับการเขยีนโปรแกรมเชงิเป็นรูปแบบท่ีคล้ายกับการเขยีนโปรแกรมเชงิโครงสรา้ง ท่ีใชย้อ่หน้าเป็นตัวกำาหนดรูปแบบของโครงสรา้ง ท่ีใชย้อ่หน้าเป็นตัวกำาหนดรูปแบบของโครงสรา้งในสว่นระดับยอ่ยๆ ลงไป โดยตัวอยา่งโครงสรา้งในสว่นระดับยอ่ยๆ ลงไป โดยตัวอยา่งแสดงไวดั้งรูปท่ี แสดงไวดั้งรูปท่ี 73. ( 73. (bb))

66วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

3. 3. แบบวงเล็บ แบบวงเล็บ ((Parenthetical List) Parenthetical List)

รูปแบบน้ีมคีวามคล้ายคลึงกับการรูปแบบน้ีมคีวามคล้ายคลึงกับการแทนขอ้มูลด้วยนิพจน์คณิตศาสตรด์้วยแทนขอ้มูลด้วยนิพจน์คณิตศาสตรด์้วยการใชเ้ครื่องหมายวงเล็บกำากับ โดยการใชเ้ครื่องหมายวงเล็บกำากับ โดยตัวอยา่งแสดงไวด้ังรูปท่ี ตัวอยา่งแสดงไวด้ังรูปท่ี 73. ( 73. (cc))

2. 2. แบบยอ่หน้า แบบยอ่หน้า ((Indent List) Indent List)

Page 7: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

77วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202

รูปท่ี 73. การนำาเสนอสว่นประกอบของคอมพวิเตอรใ์นรูปแบต่างๆ

Computer ((case(…) CPU(Controller ALU … ROM) 3.5 “DISK(…) … CD-ROM(…)” )(c ) แบบวงเล็บ (Parenthetical Parenthetical

ListList)

(b ) แบบยอ่หน้า (Indent ListList)

(a)แบบโครงสรา้งทรทัีว่ไป (Indent ListList)

Computer case CPU Controller ALU ROM) 3.5 “DISK(…) CD-ROM

Computer

Case CPU 3.5”DISK

CD-ROM

Controller ALU ROM

. . .

. . .

. . .

Page 8: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

88วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

อักอรทึิมท่ี 71 การแปลงโครงสรา้งทรแีบบทัว่ไปมาเป็นวงเล็บ

Algorithm ConvertToParen (root, output) Convert a general tree to parenthetical notation. Pre root is a pointer to a tree node Post output contains parenthetical notation1 Place root in output2 if (root is a parent) 1 Place an open parenthesis in the output 2 ConvertToParen (root's first child) 3 loop (more siblings) 1 ConvertToParen (root's next child) 4 end loop 5 place close parenthesis in the output3 end if4 returnend ConvertToParen

Page 9: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

ไบนารทีร ีไบนารทีร ี((Binary Binary Tree) Tree) ไบนารทีรจีดัเป็นทรชีนิดหน่ึงท่ีมคีวามสำาคัญมาก ไบนารทีรจีดัเป็นทรชีนิดหน่ึงท่ีมคีวามสำาคัญมาก

โดยมคีณุสมบติัท่ีสำาคัญคือ เป็นทรท่ีีสามารถมีโดยมคีณุสมบติัท่ีสำาคัญคือ เป็นทรท่ีีสามารถมีลกูได้ไมเ่กินสองโหนด ในทกุๆ โหนดอาจมเีพยีงลกูได้ไมเ่กินสองโหนด ในทกุๆ โหนดอาจมเีพยีงด้านซา้ยและด้านขวา หรอือาจมลีกูทัง้ซา้ยและด้านซา้ยและด้านขวา หรอือาจมลีกูทัง้ซา้ยและขวา หรอือาจไมม่ลีกูเลยก็ได้ หรอืกล่าวอีกนัยขวา หรอือาจไมม่ลีกูเลยก็ได้ หรอืกล่าวอีกนัยหนึ่งก็คือ เป็นทรท่ีีแต่ละโหนดจะมซีบัทร ีหนึ่งก็คือ เป็นทรท่ีีแต่ละโหนดจะมซีบัทร ี<=2 <=2 นัน้เอง พจิารณารูปท่ี นัน้เอง พจิารณารูปท่ี 74. 74. ซึ่งเป็นไบนารทีรท่ีีซึ่งเป็นไบนารทีรท่ีีประกอบด้วย ประกอบด้วย 2 2 ซบัทร ีโดยแต่ละซบัทรทัีง้ด้านซบัทร ีโดยแต่ละซบัทรทัีง้ด้านซา้ยและด้านขวาต่างมคีณุสมบติัเป็นไบนารทีรีซา้ยและด้านขวาต่างมคีณุสมบติัเป็นไบนารทีรี

99วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202

Page 10: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

1010วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 75 ไบนารทีรรีูปแบบต่าง

(a)

No nodes(null tree)

(b)

A

(b)

AB

(d)

AB

(e)

(f)

AB C

D E

AB C

(g)

(h)

AB

C

A

BC

Page 11: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

คณุสมบติัของไบนารทีร ีคณุสมบติัของไบนารทีร ี((Properties) Properties) ด้วยคณุสมบติัของไบนารทีร ีจงึทำาใหไ้บนารทีรมีีด้วยคณุสมบติัของไบนารทีร ีจงึทำาใหไ้บนารทีรมีีคณุสมบติัพเิศษกวา่ทรทัีว่ไป ซึ่งประกอบด้วยคณุสมบติัคณุสมบติัพเิศษกวา่ทรทัีว่ไป ซึ่งประกอบด้วยคณุสมบติัท่ีสามารถนำาไปคำานวณเพื่อหาผลลัพธไ์ด้ดังต่อไปน้ีท่ีสามารถนำาไปคำานวณเพื่อหาผลลัพธไ์ด้ดังต่อไปน้ี

1111วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

ความสงูของไบนารทีร ีความสงูของไบนารทีร ี((Height of Binary Tree) Height of Binary Tree)

ความสงูหรอืความลึกของไบนารทีรีความสงูหรอืความลึกของไบนารทีรีสามารถนำาไปใชเ้พื่อคำานวณกับสิง่ต่อไปนี้สามารถนำาไปใชเ้พื่อคำานวณกับสิง่ต่อไปนี้

Page 12: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

1212วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

ความสงูมากท่ีสดุของทร ีความสงูมากท่ีสดุของทร ี((Maximum Height) Maximum Height)

หากต้องการจดัเก็บโหนดจำานวน หากต้องการจดัเก็บโหนดจำานวน N N โหนดในไบนารทีร ีความสงูมากท่ีสดุของโหนดในไบนารทีร ีความสงูมากท่ีสดุของทรดัีงกล่าวสามารถคำานวณได้จากสตูรทรดัีงกล่าวสามารถคำานวณได้จากสตูร Hmax = N

EX. EX. มโีหนดจำานวน มโีหนดจำานวน 3 3 โหนด และโหนด และต้องการจดัเก็บไวใ้นไบนาร ีความสงูมากต้องการจดัเก็บไวใ้นไบนาร ีความสงูมากท่ีสดุของทรก็ีคือ ท่ีสดุของทรก็ีคือ Hmax เท่ากับ เท่ากับ 3 3 นัน้นัน้เอง ซึ่งเป็นไปได้ดังรูปท่ี เอง ซึ่งเป็นไปได้ดังรูปท่ี 75. ( 75. (gg ) ) หรอืหรอืรูปท่ี รูปท่ี 75. ( 75. (hh))

Page 13: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

1313วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

ความสงูน้อยท่ีสดุของทร ีความสงูน้อยท่ีสดุของทร ี((Minimum Height) Minimum Height)

หากต้องการจดัเก็บโหนดจำานวน หากต้องการจดัเก็บโหนดจำานวน N N โหนดในไบนารทีร ีความสงูน้อยท่ีสดุของโหนดในไบนารทีร ีความสงูน้อยท่ีสดุของทรดัีงกล่าวสามารถคำานวณได้จากสตูรทรดัีงกล่าวสามารถคำานวณได้จากสตูร Hmin = [log2 N] + 1

EX. EX. มโีหนดจำานวน มโีหนดจำานวน 3 3 โหนด และโหนด และต้องการจดัเก็บไวใ้นไบนาร ีความสงูมากต้องการจดัเก็บไวใ้นไบนาร ีความสงูมากท่ีสดุของทรก็ีคือ ท่ีสดุของทรก็ีคือ Hmin เท่ากับ เท่ากับ 2 2 นัน้นัน้เอง ซึ่งเป็นไปได้ดังรูปท่ี เอง ซึ่งเป็นไปได้ดังรูปท่ี 75. ( 75. (ee))

Page 14: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

1414วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

จำานวนโหนดน้อยท่ีสดุ จำานวนโหนดน้อยท่ีสดุ ((Minnimum Nodes) Minnimum Nodes)

เราสามารถคำานวณเพื่อทำาการตัดสนิใจเราสามารถคำานวณเพื่อทำาการตัดสนิใจวา่ จำานวนโหนดน้อยท่ีสดุท่ีสามารถมไีด้ในวา่ จำานวนโหนดน้อยท่ีสดุท่ีสามารถมไีด้ในไบนารมีจีำานวนเท่าไรได้จากสตูรไบนารมีจีำานวนเท่าไรได้จากสตูร Hmax = H

EX. EX. ทรมีคีวามสงูเท่ากับ ทรมีคีวามสงูเท่ากับ 3 3 อยากทราบอยากทราบวา่ จำานวนโหนดท่ีสามารถมไีด้น้อยท่ีสดุวา่ จำานวนโหนดท่ีสามารถมไีด้น้อยท่ีสดุเท่าไร จากสตูรการคำานวณขา้งต้น เท่าไร จากสตูรการคำานวณขา้งต้น Hmin มค่ีาเท่ากับ มค่ีาเท่ากับ 3 3 นัน้เอง ซึ่งเป็นไปได้ดังรูปนัน้เอง ซึ่งเป็นไปได้ดังรูปท่ี ท่ี 75. ( 75. (gg ) ) หรอืรูปท่ี หรอืรูปท่ี 75. ( 75. (hh))

Page 15: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

1515วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

จำานวนโหนดมากท่ีสดุ จำานวนโหนดมากท่ีสดุ ((Maximum Nodes) Maximum Nodes)

เราสามารถคำานวณเพื่อทำาการตัดสนิใจเราสามารถคำานวณเพื่อทำาการตัดสนิใจวา่ จำานวนโหนดมากท่ีสดุท่ีสามารถมไีด้ในวา่ จำานวนโหนดมากท่ีสดุท่ีสามารถมไีด้ในไบนารมีจีำานวนเท่าไรได้จากสตูร ไบนารมีจีำานวนเท่าไรได้จากสตูร ((แต่ละแต่ละโหนดสามารถมลีกูสงูสดุได้ไมเ่กิน โหนดสามารถมลีกูสงูสดุได้ไมเ่กิน 2 2โหนดโหนด)) Hmax = 2H - 1

EX. EX. ทรมีคีวามสงูเท่ากับ ทรมีคีวามสงูเท่ากับ 3 3 อยากทราบอยากทราบวา่ จำานวนโหนดท่ีสามารถมไีด้น้อยท่ีสดุวา่ จำานวนโหนดท่ีสามารถมไีด้น้อยท่ีสดุเท่าไร จากสตูรการคำานวณขา้งต้น เท่าไร จากสตูรการคำานวณขา้งต้น Hmax มค่ีาเท่ากับ มค่ีาเท่ากับ 77

Page 16: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

1616วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

ความสมดลุ ความสมดลุ ((Balance) Balance)

ความสมดลุหาได้จาก ความสมดลุหาได้จาก Balance Balance Factor Factor เท่ากับ เท่ากับ 0 0 ซึ่งค่าดังกล่าวซึ่งค่าดังกล่าวคำานวณได้จากการนำาความสงูของซบัทรีคำานวณได้จากการนำาความสงูของซบัทรีด้านซา้ย ด้านซา้ย ((HL ) ) มาลบกับความสงูของซบัมาลบกับความสงูของซบัทรด้ีานขวา ทรด้ีานขวา ((HR ) ) ท่ีเป็นไปตามสตูรดังนี้ท่ีเป็นไปตามสตูรดังนี้ B = HL - HR

และจากสตูรดังกล่าว ความสมดลุของทรีและจากสตูรดังกล่าว ความสมดลุของทรีจากรูปท่ี จากรูปท่ี 75. 75. ก็คือ ก็คือ ((aa ) ) = 0, (b) = 0, (b) = 0, (c) = 1, (d) = -1, (e) = 0, = 0, (c) = 1, (d) = -1, (e) = 0, (f) =1, (g) = -2 (f) =1, (g) = -2 และ และ (h) = 2 (h) = 2

Page 17: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

1717วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202

รูปที่ 76. ไบนารทีรรูีปแบบต่าง

HL = 0

Balance Factor = -2

AB C

D E

A

CB

HR = 2

Balance Factor = 1

HR = 1

HL = 2

Page 18: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

ไบนารทีรแีบบสมบูรณ์และเกือบไบนารทีรแีบบสมบูรณ์และเกือบสมบูรณ์ สมบูรณ์ ((Complete and Complete and Nearly Complete Binary Nearly Complete Binary Tree) Tree) ไบนารทีรแีบบสมบูรณ์นัน้จะมจีำานวนโหนดสงูสดุท่ีไบนารทีรแีบบสมบูรณ์นัน้จะมจีำานวนโหนดสงูสดุท่ีสามารมไีด้ ซึ่งเป็นไปตามสตูร สามารมไีด้ ซึ่งเป็นไปตามสตูร HHmax max โดยโหนดของโดยโหนดของซบัทรดี้านซา้ยและซบัทรดี้านขวาจะมจีำานวนเท่ากัน ซบัทรดี้านซา้ยและซบัทรดี้านขวาจะมจีำานวนเท่ากัน สำาหรบัตัวอยา่งไบนารทีรแีบบสมบูรณ์ แสดงไวดั้งสำาหรบัตัวอยา่งไบนารทีรแีบบสมบูรณ์ แสดงไวดั้งรูปท่ี รูปท่ี 77. ( 77. (aa ) ) ในขณะท่ีไบนารทีรเีกือบสมบูรณ์ก็ในขณะท่ีไบนารทีรเีกือบสมบูรณ์ก็จะเป็นไปตามสตูร จะเป็นไปตามสตูร HHminmin หรอืเป็นทรท่ีีมโีหนดเต็มทกุหรอืเป็นทรท่ีีมโีหนดเต็มทกุโหนด ยกเวน้ในระดับโหนดสดุท้ายท่ีมโีหนดเฉพาะโหนด ยกเวน้ในระดับโหนดสดุท้ายท่ีมโีหนดเฉพาะทางด้านซา้ย ซึ่งเป็นไปได้ดังรูปท่ี ทางด้านซา้ย ซึ่งเป็นไปได้ดังรูปท่ี 77. ( 77. (bb ) )

1818วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202

Page 19: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

1919วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 77. ไบนารทีรี(b) ไบนารทีรีเกือบสมบูรณ์

AB C

D E F

AB C

D E

AB C

D

(a) ไบนารทีรแีบบสมบูรณ์

AB C

D E F G

AB C

A

Page 20: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

การแทนไบนารทีรใีนการแทนไบนารทีรใีนหน่วยความจำา หน่วยความจำา ((Binary Tree Binary Tree Representation) Representation) ในที่น้ีจะกล่าวถึงการแทนโครงสรา้งไบนารทีรใีนในที่น้ีจะกล่าวถึงการแทนโครงสรา้งไบนารทีรใีนหน่วยความจำาแบบหน่ึงมติิ ในกรณีท่ีทรอียูใ่นรูปแบบหน่วยความจำาแบบหน่ึงมติิ ในกรณีท่ีทรอียูใ่นรูปแบบของไบนารทีรแีบบสมบูรณ์ ก็จะลำาดับขอ้มูลในทรีของไบนารทีรแีบบสมบูรณ์ ก็จะลำาดับขอ้มูลในทรีแต่ละระดับด้วยการเรยีงจากซา้ยไปขวา จากรูปที่ แต่ละระดับด้วยการเรยีงจากซา้ยไปขวา จากรูปที่ 77

8. 8. เป็นตัวอยา่งไบนารทีรแีบบสมบูรณ์ เมื่อนำามาเป็นตัวอยา่งไบนารทีรแีบบสมบูรณ์ เมื่อนำามาแทนโครงสรา้งด้วยอารเ์รยห์น่ึงมติิ ก็จะมกีารลำาดับแทนโครงสรา้งด้วยอารเ์รยห์น่ึงมติิ ก็จะมกีารลำาดับตำาแหน่งขอ้มูลดังน้ีตำาแหน่งขอ้มูลดังน้ี

2020วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

การแทนไบนารีการแทนไบนารีทรด้ีวยอารเ์รย์ทรด้ีวยอารเ์รย์

Page 21: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

2121วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 78 ตัวอยา่งไบนารทีรแีบบสมบูรณ์

AB C

D E F G

A B C D E F G(0)

(1)

(2)

(3)

(4)

(5)

(6)

Page 22: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

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

2222วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 79 การแปลงไบนารทีรแีบบไมส่มบูรณ์ได้ด้วยการเพิม่โหนดวา่งใหเ้ต็มต้น

AB C

D E

A B C D E(0)

(1)

(2)

(3)

(4)

(5)

(6)

AB C

D E

Page 23: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

การแทนโครงสรา้งไบนารทีรใีนหน่วยความจำาแบบลิการแทนโครงสรา้งไบนารทีรใีนหน่วยความจำาแบบลิงก์ลิสต์จะชว่ยแก้ปัญหาการสญูเสยีพื้นท่ีวา่งเปล่า งก์ลิสต์จะชว่ยแก้ปัญหาการสญูเสยีพื้นท่ีวา่งเปล่า ในกรณีของหน่วยความจำาแบบสแตติกของอารเ์รย์ในกรณีของหน่วยความจำาแบบสแตติกของอารเ์รย์ได้ และด้วยลิงก์ลิสต์เป็นหน่วยความจำาแบบไดนามกิได้ และด้วยลิงก์ลิสต์เป็นหน่วยความจำาแบบไดนามกินี้เอง จงึสามารถใชห้น่วยความจำาได้อยา่งคุ้มค่า นี้เอง จงึสามารถใชห้น่วยความจำาได้อยา่งคุ้มค่า โดยแต่ละโหนดจะประกอบด้วยขอ้มูลสำาคัญอยู ่โดยแต่ละโหนดจะประกอบด้วยขอ้มูลสำาคัญอยู ่ 3 3ฟลิด์ คือขอ้มูลท่ีบรรจุอยูใ่นโหนด และพอยน์เตอรท่ี์ฟลิด์ คือขอ้มูลท่ีบรรจุอยูใ่นโหนด และพอยน์เตอรท่ี์ชีไ้ปยงัซบัทรดี้านซา้ย กับพอยน์เตอรท่ี์ชีไ้ปยงัซบัทรีชีไ้ปยงัซบัทรดี้านซา้ย กับพอยน์เตอรท่ี์ชีไ้ปยงัซบัทรีด้านขวา ซึ่งเป็นไปได้ดังรูปท่ี ด้านขวา ซึ่งเป็นไปได้ดังรูปท่ี 710.710.

2323วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

การแทนไบนารทีรีการแทนไบนารทีรีด้วยลิงก์ลิสต์ด้วยลิงก์ลิสต์

Page 24: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

2424วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 710 ภาพแสดงการแทนไบนารทีรดี้วยลิงก์ลิสต์

A

B C

D E F G

A

B C

D E

Page 25: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

การท่องเขา้ไปในไบนารทีร ีก็คือการเดินทางเขา้ไปการท่องเขา้ไปในไบนารทีร ีก็คือการเดินทางเขา้ไปในทร ีซึ่งแต่ละโหนดอยา่งน้อยจะถกูกระทำา ในทร ีซึ่งแต่ละโหนดอยา่งน้อยจะถกูกระทำา 1 1ครัง้ โดยตัวอยา่งการกระทำาเชน่ การค้นหาท่ีจะครัง้ โดยตัวอยา่งการกระทำาเชน่ การค้นหาท่ีจะต้องเดินทางผ่านโหนดแต่ละโหนดตามลำาดับ ต้องเดินทางผ่านโหนดแต่ละโหนดตามลำาดับ เป็นต้น และโดยปกติวธิกีารท่องเขา้ไปในทรจีะมอียู่เป็นต้น และโดยปกติวธิกีารท่องเขา้ไปในทรจีะมอียู่ด้วยกัน ด้วยกัน 2 2 วธิดี้วยกันคือ วธิดี้วยกันคือ 1 1 วธิกีารท่องแบบวธิกีารท่องแบบแนวลึก แนวลึก ((Depth-FirstDepth-First ) ) 2. 2. วธิกีารท่องวธิกีารท่องแบบแนวกวา้ง แบบแนวกวา้ง ((Breadth-FirstBreadth-First ) )

2525วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

การท่องเขา้ไปในไบนารทีร ีการท่องเขา้ไปในไบนารทีร ี((Binary Tree TraversalsBinary Tree Traversals))

Page 26: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

เป็นวธิกีารท่องเขา้ไปในทรดี้วยการเดินผ่านเป็นวธิกีารท่องเขา้ไปในทรดี้วยการเดินผ่านจากรูทโหนดลงไปยงัโหนดลกูๆ ซึ่งมทัีง้ฝ่ังจากรูทโหนดลงไปยงัโหนดลกูๆ ซึ่งมทัีง้ฝ่ังด้านซา้ยและด้านขวา ดังนัน้จงึมกีารบญัญัติด้านซา้ยและด้านขวา ดังนัน้จงึมกีารบญัญัติคำายอ่เพื่อใชง้านดังน้ี คำายอ่เพื่อใชง้านดังน้ี N N แทนรูดโหนดแทนรูดโหนด L L แทนซบัทรด้ีานซา้ยแทนซบัทรด้ีานซา้ย R R แทนซบัทรด้ีานขวาแทนซบัทรด้ีานขวา

2626วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

1. 1. วธิกีารท่องแบบแนวลึก วธิกีารท่องแบบแนวลึก ((Depth-First TraversalsDepth-First Traversals))

Page 27: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

สำาหรบัวธิกีารท่องแบบแนวลึก จะขอกล่าวเพยีง สำาหรบัวธิกีารท่องแบบแนวลึก จะขอกล่าวเพยีง 3 3วธิกีารมาตรฐานท่ีนิยมใชกั้นอยา่งแพรห่ลาย ซึ่งวธิกีารมาตรฐานท่ีนิยมใชกั้นอยา่งแพรห่ลาย ซึ่งประกอบด้วยวธิ ีประกอบด้วยวธิ ีPreorder, Inorder Preorder, Inorder และ และ PostorderPostorder

2727วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 711. การท่องไปยงัทรแีบบแนวลึกด้วยวธิต่ีางๆ

N

RL 2

Leftsubtree

3Righ

tsubtree

1

(a) Preorder traversal

N

RL 1

Leftsubtree

3Righ

tsubtree

2

(C) Inorder traversal

N

RL 1

Leftsubtree

2Righ

tsubtree

3

(C) Postorder traversal

Page 28: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

วธิกีารท่องเขา้ไปในทรแีบบ วธิกีารท่องเขา้ไปในทรแีบบ Preorder Preorder จะจะท่องในรูปแบบ ท่องในรูปแบบ NLR NLR คือ จะเริม่ต้นกระทำาท่ีคือ จะเริม่ต้นกระทำาท่ีรูทโหนดก่อนเป็นลำาดับแรก จากนัน้ก็ตามรูทโหนดก่อนเป็นลำาดับแรก จากนัน้ก็ตามด้วยซบัทรด้ีานขวา โดยพจิารณาจากรูปท่ี ด้วยซบัทรด้ีานขวา โดยพจิารณาจากรูปท่ี

712. ( 712. (aa ) ) ท่ีแสดงถึงการท่องเขา้ไปท่ีแสดงถึงการท่องเขา้ไปแบบ แบบ Preorder Preorder และผลลัพธท่ี์ได้ขณะท่ีซูโดและผลลัพธท่ี์ได้ขณะท่ีซูโดโค้ดของการท่องแบบ โค้ดของการท่องแบบ Preorder Preorder แสดงไว้แสดงไว้ในอัลกอรทึิมท่ี ในอัลกอรทึิมท่ี 72.72.

2828วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

แบบพรอีอรเ์ดอร ์แบบพรอีอรเ์ดอร ์((Preorder Preorder Traversal : NLRTraversal : NLR))

Page 29: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

2929วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

อักอรทึิมท่ี 72 การท่องไปยงัไบนารทีรแีบบ Preorder

Algorithm PreOrder (root)Traverse a binary tree in node-left-right sequence. Pre root is the entry node of a tree or subtree Post each node has been processed in order1 if (root is not null) 1 process (root) 2 preOrder (leftSubtree) 3 preOrder (rightSubtree)2 end ifend preOrder

Page 30: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

วธิกีารท่องเขา้ไปในทรแีบบ วธิกีารท่องเขา้ไปในทรแีบบ Inorder Inorder จะท่องจะท่องในรูปแบบ ในรูปแบบ LNR LNR คือ จะเริม่ต้นกระทำาที่ซบัทรีคือ จะเริม่ต้นกระทำาที่ซบัทรีด้านซา้ยก่อนเป็นลำาดับแรก จากนัน้ก็ตามด้านซา้ยก่อนเป็นลำาดับแรก จากนัน้ก็ตามด้วยรูทโหนด และท้ายสดุก็คือซบัทรดี้านขวา ด้วยรูทโหนด และท้ายสดุก็คือซบัทรดี้านขวา โดยพจิารณาจากรูปท่ี โดยพจิารณาจากรูปท่ี 712. ( 712. (bb ) ) ท่ีท่ีแสดงถึงการท่องเขา้ไปแบบ แสดงถึงการท่องเขา้ไปแบบ Inorder Inorder และและผลลัพธท่ี์ได้ขณะท่ีซูโดโค้ดของการท่องแบบผลลัพธท่ี์ได้ขณะท่ีซูโดโค้ดของการท่องแบบ Inorder Inorder แสดงไวใ้นอัลกอรทึิมท่ี แสดงไวใ้นอัลกอรทึิมท่ี 7373

3030วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

แบบอินออรเ์ดอร ์แบบอินออรเ์ดอร ์((Inorder Inorder Traversal : LNRTraversal : LNR))

Page 31: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

3131วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

อักอรทึิมท่ี 73. การท่องไปยงัไบนารทีรแีบบ Inorder

Algorithm inOrder (root)Traverse a jbinary tree in left-node-right sequence. Pre root is the entry node of a tree or subtree Post each node has been processed in order1 if (root is not null) 1 inOrder (leftSubTree) 2 process (root) 3 inOrder (rightSubTree)2 end ifend inOrder

Page 32: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

วธิกีารท่องเขา้ไปในทรแีบบ วธิกีารท่องเขา้ไปในทรแีบบ Postorder Postorder จะจะท่องในรูปแบบ ท่องในรูปแบบ LRN LRN คือ จะเริม่ต้นกระทำาท่ีคือ จะเริม่ต้นกระทำาท่ีซบัทรดี้านซา้ยก่อนแล้วตามด้วยซบัทรดี้านซบัทรดี้านซา้ยก่อนแล้วตามด้วยซบัทรดี้านขวา ก่อน จากนัน้จบลงท่ีรูทโหนด โดยขวา ก่อน จากนัน้จบลงท่ีรูทโหนด โดยพจิารณาจากรูปท่ี พจิารณาจากรูปท่ี 712. ( 712. (cc ) ) ท่ีแสดงท่ีแสดงถึงการท่องเขา้ไปแบบ ถึงการท่องเขา้ไปแบบ Postorder Postorder และและผลลัพธท่ี์ได้ขณะท่ีซูโดโค้ดของการท่องแบบผลลัพธท่ี์ได้ขณะท่ีซูโดโค้ดของการท่องแบบ Postorder Postorder แสดงไวใ้นอัลกอรทึิมท่ี แสดงไวใ้นอัลกอรทึิมท่ี 7.7.44

3232วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

แบบโพสต์ออรเ์ดอร ์แบบโพสต์ออรเ์ดอร ์((Postorder Traversal : Postorder Traversal : LRNLRN))

Page 33: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

3333วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

อักอรทึิมท่ี 74 การท่องไปยงัไบนารทีรแีบบ Postorder

Algorithm postOrder (root)Traverse a binary tree in left-right-node sequence. Pre root is the entry node of a tree or subtree Post each node has .been processed in order1 if (root is not null) 1 postOrder (leftSubTree) 2 postOrder (rightSubtree) 3 process (root)2 end ifend postOrder

Page 34: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

3434วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 712. การท่องไปยงัไบนารทีรแีบบ Depth-First ซึ่งประกอบด้วยวธิต่ีางๆ และผลลัพธท่ี์ได้

Preorder order “Walking” order

A

BC D

EF

A

BC D

EF

A B C D E F

(a ) วธิกีารท่องแบบ Preorder

Page 35: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

3535วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 712. การท่องไปยงัไบนารทีรแีบบ Depth-First ซึ่งประกอบด้วยวธิต่ีางๆ และผลลัพธท่ี์ได้

Inorder order “Walking” order

A

BC D

EF

A

BC D

EF

A BC D EF

(b ) วธิกีารท่องแบบ Inorder

Page 36: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

3636วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 712. การท่องไปยงัไบนารทีรแีบบ Depth-First ซึ่งประกอบด้วยวธิต่ีางๆ และผลลัพธท่ี์ได้

Postorder order “Walking” order

A

BC D

EF

A

BC D

EF

A BC D

E F

(c ) วธิกีารท่องแบบ Postorder

Page 37: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

เป็นวธิกีารท่องเขา้ไปในทรด้ีวยเป็นวธิกีารท่องเขา้ไปในทรด้ีวยการกระทำาทีละระดับจากบนลงล่าง โดยการกระทำาทีละระดับจากบนลงล่าง โดยเริม่ต้นจากรูทโหนด แล้วจงึค่อยเขา้ถึงเริม่ต้นจากรูทโหนด แล้วจงึค่อยเขา้ถึงแต่ละโหนดในแต่ละระดับตามแนวกวา้งแต่ละโหนดในแต่ละระดับตามแนวกวา้งจากซา้ยไปขวา จนกระทัง่ครบทกุระดับ จากซา้ยไปขวา จนกระทัง่ครบทกุระดับ ซึ่งตัวอยา่งการทำางานได้ดังรูปท่ี ซึ่งตัวอยา่งการทำางานได้ดังรูปท่ี 717133

3737วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

2. 2. วธิกีารท่องแบบแนวกวา้ง วธิกีารท่องแบบแนวกวา้ง ((Breadth-First TraversalsBreadth-First Traversals))

Page 38: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

3838วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 713 การท่องไปยงัไบนารทีรด้ีวยวธิ ีBreadth-First Traversals

Preorder order “Walking” order

A

BC D

BD

A

BC D

BD

B E

A

C D F

Page 39: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

สำาหรบัการท่องเขา้ไปในทรดี้วยวธิ ีสำาหรบัการท่องเขา้ไปในทรดี้วยวธิ ี((Depth-Depth-FirstFirst ) ) นัน้จะใชส้แต็ก ซึ่งทราบกันดีแล้ววา่ นัน้จะใชส้แต็ก ซึ่งทราบกันดีแล้ววา่ การเรยีกซำ้าหรอืรเีคอรช์นันัน้จะใชโ้ครงสรา้งการเรยีกซำ้าหรอืรเีคอรช์นันัน้จะใชโ้ครงสรา้งขอ้มูลสแต็กชว่ยในการทำางาน ในขณะท่ีการขอ้มูลสแต็กชว่ยในการทำางาน ในขณะท่ีการท่องไปยงัทรแีบบ ท่องไปยงัทรแีบบ ((Breath-FirstBreath-First ) ) นัน้จะใช้นัน้จะใช้โครงสรา้งคิว โดยซูโดโค้ดสำาหรบัการท่องโครงสรา้งคิว โดยซูโดโค้ดสำาหรบัการท่องเขา้ไปในไบนารทีรดี้วยวธิ ีเขา้ไปในไบนารทีรดี้วยวธิ ีBreath-FirstBreath-First แสดงไวใ้นอัลกอรทึิมท่ี แสดงไวใ้นอัลกอรทึิมท่ี 713713

3939วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

Page 40: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

4040วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

อักอรทึิมท่ี 75. การท่องไปยงัไบนารทีรแีบบ Breath-First

Algorithm breadthFirst (root)Process tree using breadth-first traversal, Pre root is node to be processed Post tree has been processed1 set currentNode to root2 createQueue (bfQueue)3 loop (currentNode not null) 1 process (currentNode) 2 if (left subtree not null) 1 enqueue (bfQueue, leftsubtree) 3 end if 4 if (right subtree not null) 1 enqueue (bf Queue, right-Subtree) 5 end if 6 if (not emptyQueue(bfQueue)) 1 set currentNode to dequeue (bfQueue) 7 else 1 set currentNode to null 8 end if4 end loop5 destroyQueue (bfQueue)end breadthFirst

Page 41: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

เอ็กซเ์พรสชนัทรคืีอไบนารทีร ีซึ่งการแทนนิพจน์เอ็กซเ์พรสชนัทรคืีอไบนารทีร ีซึ่งการแทนนิพจน์ในเอ็กซเ์พรสชนัทรนีัน้ จะต้องเป็นไปตามในเอ็กซเ์พรสชนัทรนีัน้ จะต้องเป็นไปตามคณุสมบติัดังต่อไปนี้ คณุสมบติัดังต่อไปนี้ 1. 1. ตัวดำาเนินตัวดำาเนินการหรอืโอเปอแรนด์จะเก็บไวใ้นโหนดใบ การหรอืโอเปอแรนด์จะเก็บไวใ้นโหนดใบ ((Leaf Leaf NodeNode ) 2 . ) 2 . ตัวดำาเนินการหรอืโอเปอเรเตอรจ์ะตัวดำาเนินการหรอืโอเปอเรเตอรจ์ะเก็บไวท่ี้รูทโหนดภายใน เก็บไวท่ี้รูทโหนดภายใน ((Internal NodeInternal Node) ) ท่ีท่ีไมใ่ชโ้หนดใบไมใ่ชโ้หนดใบ 3 . 3 . ซบัทร ีในท่ีน้ีคือนิพจน์ซบัทร ีในท่ีน้ีคือนิพจน์ยอ่ย โดยจะมรีูทโหนดเป็นตัวโอเปอเรเตอร์ยอ่ย โดยจะมรีูทโหนดเป็นตัวโอเปอเรเตอร์

4141วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202

เอ็กซเ์พรสชนัทร ีเอ็กซเ์พรสชนัทร ี((Expression Expression Tree TraversalsTree Traversals))

Page 42: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

จากตัวอยา่งดังรูปท่ี จากตัวอยา่งดังรูปท่ี 714. 714. ซึ่งเป็นนิพจน์ซึ่งเป็นนิพจน์เดียวกัน แต่นำาเสนอทัง้ในรูปแบบของนิพจน์เดียวกัน แต่นำาเสนอทัง้ในรูปแบบของนิพจน์แบบ แบบ Infix Infix และ เอ็กซเ์พรสชนัทรีและ เอ็กซเ์พรสชนัทรี

4242วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 714 นิพจน์เดียวกันท่ีนำาเสนอในรูปแบบนิพจน์ Infix และเอ็กซเ์พรสชนัทรี

a

+* a

+b b

a * (b + c) + d

Page 43: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

จากหลักความรูเ้ก่ียวกับการท่องไปยงัไบนารทีร ีจากหลักความรูเ้ก่ียวกับการท่องไปยงัไบนารทีร ีด้วยวธิกีารท่องแบบแนวลึกท่ีประกอบไปด้วย ด้วยวธิกีารท่องแบบแนวลึกท่ีประกอบไปด้วย 3 3วธิมีาตรฐานนี้เอง จงึเป็นท่ีมาของการนำาไปประยุกต์วธิมีาตรฐานนี้เอง จงึเป็นท่ีมาของการนำาไปประยุกต์ใชง้านเอ็กซเ์พรสชนัทร ีโดยท่ี ใชง้านเอ็กซเ์พรสชนัทร ีโดยท่ี 1 . 1 .เอ็กซเ์พรสชนัทรแีบบ เอ็กซเ์พรสชนัทรแีบบ InfixInfix จะใชว้ธิกีารท่องเขา้ไปจะใชว้ธิกีารท่องเขา้ไปในทรแีบบ ในทรแีบบ InorderInorder 2. 2. เอ็กซเ์พรสชนัทรแีบบ เอ็กซเ์พรสชนัทรแีบบ PostfixPostfix จะใชว้ธิกีารท่องเขา้ไปในทรแีบบ จะใชว้ธิกีารท่องเขา้ไปในทรแีบบ PostorderPostorder 3. 3. เอ็กซเ์พรสชนัทรแีบบ เอ็กซเ์พรสชนัทรแีบบ PrefixPrefix จะใชว้ธิกีารท่องเขา้ไปในทรแีบบ จะใชว้ธิกีารท่องเขา้ไปในทรแีบบ PreorderPreorder

4343วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202

Page 44: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

สำาหรบัตัวอยา่งการท่องไปยงัเอ็กซเ์พรสชนัทรแีบบ สำาหรบัตัวอยา่งการท่องไปยงัเอ็กซเ์พรสชนัทรแีบบ Infix Infix ในท่ีนี้จะเขยีนอัลกอรทึิม และทำาการพมิพน์ิพจน์ในท่ีนี้จะเขยีนอัลกอรทึิม และทำาการพมิพน์ิพจน์ออกมาดังรูปท่ี ออกมาดังรูปท่ี 715. 715. เมื่อมกีารท่องเพื่อพมิพ์เมื่อมกีารท่องเพื่อพมิพ์นิพจน์ในรูปแบบ นิพจน์ในรูปแบบ Infix Infix จะต้องเพิม่เครื่องหมายวงเล็บจะต้องเพิม่เครื่องหมายวงเล็บเปิดท่ีจุดเริม่ต้นของแต่ละนิพจน์ และจะปิดด้วยเปิดท่ีจุดเริม่ต้นของแต่ละนิพจน์ และจะปิดด้วยเครื่องหมายวงเล็บปิดท่ีสว่นปลายของนิพจน์นัน้ท่ีได้ก็เครื่องหมายวงเล็บปิดท่ีสว่นปลายของนิพจน์นัน้ท่ีได้ก็คือคือ

สำาหรบัซูโดโค้ดของเอ็กซเ์พรสชนัทร ีสำาหรบัซูโดโค้ดของเอ็กซเ์พรสชนัทร ีInfixInfix แสดงไวใ้นแสดงไวใ้นอัลกอรทึิมที่ อัลกอรทึิมที่ 7676

4444วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

การท่องเขา้ไปในการท่องเขา้ไปในเอ็กซเ์พรสชนัทรแีบบ เอ็กซเ์พรสชนัทรแีบบ InfixInfix

(( a * (b + c) + d)

Page 45: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

4545วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

รูปท่ี 715 การท่องแบบ Infix ในเอ็กซเ์พรสชนัทรี

a

+* a

+b b

(( a * (b + c) + d)

( )

)

)(

(

Page 46: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

4646วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202

อักอรทึิมท่ี 76 การท่องไปยงัในเอ็กซเ์พรสชนัทรีแบบ Infix

Algorithm infix (tree)Print the infix expression for an expression tree. Pre tree is a pointer to an expression tree Post the infix expression has been printed1 if (tree not empty) 1 if (tree token is an operand) 1 print (tree-token) 2 else 1 print (open parenthesis) 2 infix (tree left subtree) 3 print (tree token) 4 infix (tree right subtree) 5 print (close parenthesis) 3 end if2 end ifend infix

Page 47: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

การท่องแบบ การท่องแบบ Postfix Postfix ในท่ีเอ็กซเ์พรสชนัทร ีจะใช้ในท่ีเอ็กซเ์พรสชนัทร ีจะใช้หลักการเดียวกับ หลักการเดียวกับ Postorder Postorder ในไบนารทีร ีซึ่งไมม่ีในไบนารทีร ีซึ่งไมม่ีความจำาเป็นต้องใชเ้ครื่องหมายวงเล็บแต่อยา่งใด ความจำาเป็นต้องใชเ้ครื่องหมายวงเล็บแต่อยา่งใด ผลลัพธจ์ากการท่องเขา้ไปในเอ็กซเ์พรสชนัทรดีังผลลัพธจ์ากการท่องเขา้ไปในเอ็กซเ์พรสชนัทรดีังรูปท่ี รูปท่ี 715 715 ก็จะได้นิพจน์ดังนี้ก็จะได้นิพจน์ดังนี้

สำาหรบัซูโดโค้ดของการท่องเขา้ไปในเอ็กซเ์พรสชนัสำาหรบัซูโดโค้ดของการท่องเขา้ไปในเอ็กซเ์พรสชนัทรแีบบ ทรแีบบ PostfixPostfix แสดงไวใ้นอัลกอรทึิมท่ี แสดงไวใ้นอัลกอรทึิมท่ี 77.77.

4747วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

การท่องเขา้ไปในเอ็กซเ์พรสการท่องเขา้ไปในเอ็กซเ์พรสชนัทรแีบบ ชนัทรแีบบ PostfixPostfix

a b c + * d +

Page 48: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

4848วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

อักอรทึิมท่ี 77. การท่องไปยงัในเอ็กซเ์พรสชนัทรีแบบ Postfix

Algorithm postfix (tree)Print the postfix expression for an expression tree. Pre tree is a pointer to an egression tree Post the postfix expression has been printed1 if (tree not empty) 1 postfix (tree left subtree) 2 postfix (tree right subtree) 3 print (tree token)2 end ifend postfix

Page 49: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

การท่องแบบ การท่องแบบ Prefix Prefix ในท่ีเอ็กซเ์พรสชนัทร ีจะใช้ในท่ีเอ็กซเ์พรสชนัทร ีจะใช้หลักการเดียวกับ หลักการเดียวกับ Preorder Preorder ในไบนารทีร ีซึ่งในไบนารทีร ีซึ่งไมม่คีวามจำาเป็นต้องใชเ้ครื่องหมายวงเล็บแต่ไมม่คีวามจำาเป็นต้องใชเ้ครื่องหมายวงเล็บแต่อยา่งใด ผลลัพธจ์ากการท่องเขา้ไปในเอ็กซเ์พรสอยา่งใด ผลลัพธจ์ากการท่องเขา้ไปในเอ็กซเ์พรสชนัทรดีังรูปท่ี ชนัทรดีังรูปท่ี 715. 715. ก็จะได้นิพจน์ดังนี้ก็จะได้นิพจน์ดังนี้

สำาหรบัซูโดโค้ดของการท่องเขา้ไปในเอ็กซเ์พรสสำาหรบัซูโดโค้ดของการท่องเขา้ไปในเอ็กซเ์พรสชนัทรแีบบ ชนัทรแีบบ PrefixPrefix แสดงไวใ้นอัลกอรทึิมทีแสดงไวใ้นอัลกอรทึิมที่ ่ 7878

4949วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

การท่องเขา้ไปในเอ็กซเ์พรสการท่องเขา้ไปในเอ็กซเ์พรสชนัทรแีบบ ชนัทรแีบบ PrefixPrefix

+ * a + b c d

Page 50: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

5050วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202

อักอรทึิมท่ี 78 การท่องไปยงัในเอ็กซเ์พรสชนัทรีแบบ Prefix

Algorithm prefix (tree)Print the prefix expression for an expression tree. Pre tree is a pointer to an expression tree Post the prefix expression has been printed1 if (tree not empty) 1 print (tree token) 2 prefix (tree left subtree) 3 prefix (tree right subtree)2 end ifend prefix

Page 51: บทที่ 7   ทรี ( Trees ) (ส่วนที่ 1)

The End The End Lesson 7 Lesson 7

(Session 1)(Session 1)

5151วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222014122201