บทที่ 7 ทรี ( trees ) (ส่วนที่ 1)
DESCRIPTION
บทที่ 7 ทรี ( Trees ) (ส่วนที่ 1). By Juthawut Chantharamalee. แนวคิดพื้นฐานของทรี ( Basic Tree Concepts). - PowerPoint PPT PresentationTRANSCRIPT
บทท่ี บทท่ี 7 7 ทร ีทร ี((TreesTrees))
((สว่นท่ี สว่นท่ี 1)1)
By Juthawut By Juthawut ChantharamaleeChantharamalee 11วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
แนวคิดพื้นฐานของทร ีแนวคิดพื้นฐานของทร ี((Basic Basic Tree Concepts) Tree Concepts) โครงสรา้งขอ้มูลแบบทรเีป็นโครงสรา้งท่ีมคีวามโครงสรา้งขอ้มูลแบบทรเีป็นโครงสรา้งท่ีมคีวามสมัพนัธใ์นลักษณะลำาดับชัน้ โดยสมาชกิแต่ละโหนด สมัพนัธใ์นลักษณะลำาดับชัน้ โดยสมาชกิแต่ละโหนด ((NodeNode ) ) ล้วนแต่มคีวามสมัพนัธใ์นลักษณะเหมอืนล้วนแต่มคีวามสมัพนัธใ์นลักษณะเหมอืนครอบครวัเดียวกัน โดยมโีหนดพอ่ ครอบครวัเดียวกัน โดยมโีหนดพอ่ ((ParentParent ) ) ท่ีอยู่ท่ีอยู่ระดับเหนือกวา่ มเีสน้เชื่อมไปยงัโหนดลกู ระดับเหนือกวา่ มเีสน้เชื่อมไปยงัโหนดลกู ((ChildChild ) )โดยท่ีโหนดลกูตัง่แต่สองโหนดหรอืมากกวา่ท่ีมาจากโดยท่ีโหนดลกูตัง่แต่สองโหนดหรอืมากกวา่ท่ีมาจากพอ่เดียวกันจะเรยีกวา่โหนดพีน่้อง พอ่เดียวกันจะเรยีกวา่โหนดพีน่้อง ((SiblingsSiblings ) )สำาหรบัความสมัพนัธอ่ื์นๆ เชน่ บรรพบุรุษ สำาหรบัความสมัพนัธอ่ื์นๆ เชน่ บรรพบุรุษ ((AncestorAncestor ) ) หรอืลกูหลาน หรอืลกูหลาน (Descendent) (Descendent) โหนดโหนดต่างๆ ภายในทรจีะอยูใ่นระดับ ต่างๆ ภายในทรจีะอยูใ่นระดับ ((LevelLevel ) ) ท่ีแตกต่างกันท่ีแตกต่างกัน
22วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
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
44วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
รูปท่ี 72 ซบัทร ี(Subtree)
A
EB
C D
F
HG I
Subtree B
Root of
Subtree I
รูปแบบการนำาเสนอรูปแบบการนำาเสนอโครงสรา้งขอ้มูลทร ี โครงสรา้งขอ้มูลทร ี ((Tree Tree Representation) Representation) เราสามารถนำาเสนอโครงสรา้งขอ้มูลทรใีห้เราสามารถนำาเสนอโครงสรา้งขอ้มูลทรใีห้
แตกต่างกันได้ถึง แตกต่างกันได้ถึง 3 3 รูปแบบด้วยกันคือรูปแบบด้วยกันคือ
55วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202
1. 1. แบบโครงสรา้งทรทัีว่ไป แบบโครงสรา้งทรทัีว่ไป ((General Tree) General Tree)
เป็นรูปแบบการนำาเสนอเหมอืนกับเป็นรูปแบบการนำาเสนอเหมอืนกับผังองค์กรทัว่ไปท่ีลดหลัน่เป็นลำาดับขัน้ ผังองค์กรทัว่ไปท่ีลดหลัน่เป็นลำาดับขัน้ ซึ่งรูปแบบดังกล่าว ถือวา่เป็นรูปแบบซึ่งรูปแบบดังกล่าว ถือวา่เป็นรูปแบบของทรท่ีีนิยมใชง้านโดยทัว่ไป โดยของทรท่ีีนิยมใชง้านโดยทัว่ไป โดยตัวอยา่งแสดงไวด้ังรูปท่ี ตัวอยา่งแสดงไวด้ังรูปท่ี 73. ( 73. (aa))
เป็นรูปแบบท่ีคล้ายกับการเขยีนโปรแกรมเชงิเป็นรูปแบบท่ีคล้ายกับการเขยีนโปรแกรมเชงิโครงสรา้ง ท่ีใชย้อ่หน้าเป็นตัวกำาหนดรูปแบบของโครงสรา้ง ท่ีใชย้อ่หน้าเป็นตัวกำาหนดรูปแบบของโครงสรา้งในสว่นระดับยอ่ยๆ ลงไป โดยตัวอยา่งโครงสรา้งในสว่นระดับยอ่ยๆ ลงไป โดยตัวอยา่งแสดงไวดั้งรูปท่ี แสดงไวดั้งรูปท่ี 73. ( 73. (bb))
66วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
3. 3. แบบวงเล็บ แบบวงเล็บ ((Parenthetical List) Parenthetical List)
รูปแบบน้ีมคีวามคล้ายคลึงกับการรูปแบบน้ีมคีวามคล้ายคลึงกับการแทนขอ้มูลด้วยนิพจน์คณิตศาสตรด์้วยแทนขอ้มูลด้วยนิพจน์คณิตศาสตรด์้วยการใชเ้ครื่องหมายวงเล็บกำากับ โดยการใชเ้ครื่องหมายวงเล็บกำากับ โดยตัวอยา่งแสดงไวด้ังรูปท่ี ตัวอยา่งแสดงไวด้ังรูปท่ี 73. ( 73. (cc))
2. 2. แบบยอ่หน้า แบบยอ่หน้า ((Indent List) Indent List)
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
. . .
. . .
. . .
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
ไบนารทีร ีไบนารทีร ี((Binary Binary Tree) Tree) ไบนารทีรจีดัเป็นทรชีนิดหน่ึงท่ีมคีวามสำาคัญมาก ไบนารทีรจีดัเป็นทรชีนิดหน่ึงท่ีมคีวามสำาคัญมาก
โดยมคีณุสมบติัท่ีสำาคัญคือ เป็นทรท่ีีสามารถมีโดยมคีณุสมบติัท่ีสำาคัญคือ เป็นทรท่ีีสามารถมีลกูได้ไมเ่กินสองโหนด ในทกุๆ โหนดอาจมเีพยีงลกูได้ไมเ่กินสองโหนด ในทกุๆ โหนดอาจมเีพยีงด้านซา้ยและด้านขวา หรอือาจมลีกูทัง้ซา้ยและด้านซา้ยและด้านขวา หรอือาจมลีกูทัง้ซา้ยและขวา หรอือาจไมม่ลีกูเลยก็ได้ หรอืกล่าวอีกนัยขวา หรอือาจไมม่ลีกูเลยก็ได้ หรอืกล่าวอีกนัยหนึ่งก็คือ เป็นทรท่ีีแต่ละโหนดจะมซีบัทร ีหนึ่งก็คือ เป็นทรท่ีีแต่ละโหนดจะมซีบัทร ี<=2 <=2 นัน้เอง พจิารณารูปท่ี นัน้เอง พจิารณารูปท่ี 74. 74. ซึ่งเป็นไบนารทีรท่ีีซึ่งเป็นไบนารทีรท่ีีประกอบด้วย ประกอบด้วย 2 2 ซบัทร ีโดยแต่ละซบัทรทัีง้ด้านซบัทร ีโดยแต่ละซบัทรทัีง้ด้านซา้ยและด้านขวาต่างมคีณุสมบติัเป็นไบนารทีรีซา้ยและด้านขวาต่างมคีณุสมบติัเป็นไบนารทีรี
99วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202
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
คณุสมบติัของไบนารทีร ีคณุสมบติัของไบนารทีร ี((Properties) Properties) ด้วยคณุสมบติัของไบนารทีร ีจงึทำาใหไ้บนารทีรมีีด้วยคณุสมบติัของไบนารทีร ีจงึทำาใหไ้บนารทีรมีีคณุสมบติัพเิศษกวา่ทรทัีว่ไป ซึ่งประกอบด้วยคณุสมบติัคณุสมบติัพเิศษกวา่ทรทัีว่ไป ซึ่งประกอบด้วยคณุสมบติัท่ีสามารถนำาไปคำานวณเพื่อหาผลลัพธไ์ด้ดังต่อไปน้ีท่ีสามารถนำาไปคำานวณเพื่อหาผลลัพธไ์ด้ดังต่อไปน้ี
1111วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
ความสงูของไบนารทีร ีความสงูของไบนารทีร ี((Height of Binary Tree) Height of Binary Tree)
ความสงูหรอืความลึกของไบนารทีรีความสงูหรอืความลึกของไบนารทีรีสามารถนำาไปใชเ้พื่อคำานวณกับสิง่ต่อไปนี้สามารถนำาไปใชเ้พื่อคำานวณกับสิง่ต่อไปนี้
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))
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))
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))
1515วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
จำานวนโหนดมากท่ีสดุ จำานวนโหนดมากท่ีสดุ ((Maximum Nodes) Maximum Nodes)
เราสามารถคำานวณเพื่อทำาการตัดสนิใจเราสามารถคำานวณเพื่อทำาการตัดสนิใจวา่ จำานวนโหนดมากท่ีสดุท่ีสามารถมไีด้ในวา่ จำานวนโหนดมากท่ีสดุท่ีสามารถมไีด้ในไบนารมีจีำานวนเท่าไรได้จากสตูร ไบนารมีจีำานวนเท่าไรได้จากสตูร ((แต่ละแต่ละโหนดสามารถมลีกูสงูสดุได้ไมเ่กิน โหนดสามารถมลีกูสงูสดุได้ไมเ่กิน 2 2โหนดโหนด)) Hmax = 2H - 1
EX. EX. ทรมีคีวามสงูเท่ากับ ทรมีคีวามสงูเท่ากับ 3 3 อยากทราบอยากทราบวา่ จำานวนโหนดท่ีสามารถมไีด้น้อยท่ีสดุวา่ จำานวนโหนดท่ีสามารถมไีด้น้อยท่ีสดุเท่าไร จากสตูรการคำานวณขา้งต้น เท่าไร จากสตูรการคำานวณขา้งต้น Hmax มค่ีาเท่ากับ มค่ีาเท่ากับ 77
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
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
ไบนารทีรแีบบสมบูรณ์และเกือบไบนารทีรแีบบสมบูรณ์และเกือบสมบูรณ์ สมบูรณ์ ((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
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
การแทนไบนารทีรใีนการแทนไบนารทีรใีนหน่วยความจำา หน่วยความจำา ((Binary Tree Binary Tree Representation) Representation) ในที่น้ีจะกล่าวถึงการแทนโครงสรา้งไบนารทีรใีนในที่น้ีจะกล่าวถึงการแทนโครงสรา้งไบนารทีรใีนหน่วยความจำาแบบหน่ึงมติิ ในกรณีท่ีทรอียูใ่นรูปแบบหน่วยความจำาแบบหน่ึงมติิ ในกรณีท่ีทรอียูใ่นรูปแบบของไบนารทีรแีบบสมบูรณ์ ก็จะลำาดับขอ้มูลในทรีของไบนารทีรแีบบสมบูรณ์ ก็จะลำาดับขอ้มูลในทรีแต่ละระดับด้วยการเรยีงจากซา้ยไปขวา จากรูปที่ แต่ละระดับด้วยการเรยีงจากซา้ยไปขวา จากรูปที่ 77
8. 8. เป็นตัวอยา่งไบนารทีรแีบบสมบูรณ์ เมื่อนำามาเป็นตัวอยา่งไบนารทีรแีบบสมบูรณ์ เมื่อนำามาแทนโครงสรา้งด้วยอารเ์รยห์น่ึงมติิ ก็จะมกีารลำาดับแทนโครงสรา้งด้วยอารเ์รยห์น่ึงมติิ ก็จะมกีารลำาดับตำาแหน่งขอ้มูลดังน้ีตำาแหน่งขอ้มูลดังน้ี
2020วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
การแทนไบนารีการแทนไบนารีทรด้ีวยอารเ์รย์ทรด้ีวยอารเ์รย์
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)
อยา่งไรก็ตาม ในกรณีท่ีทรนัีน้เป็นไบนารแีบบไมส่มบูรณ์หรอืเกือบอยา่งไรก็ตาม ในกรณีท่ีทรนัีน้เป็นไบนารแีบบไมส่มบูรณ์หรอืเกือบสมบูรณ์ ลำาดับตำาแหน่งจะมกีารจดัเรยีงแตกต่างไปจากเดิม แต่ยงัสมบูรณ์ ลำาดับตำาแหน่งจะมกีารจดัเรยีงแตกต่างไปจากเดิม แต่ยงัคงสามารถกระทำาตามขัน้ตอนเชน่เดิมได้ โดยแปลงไบนารทีรท่ีีไม่คงสามารถกระทำาตามขัน้ตอนเชน่เดิมได้ โดยแปลงไบนารทีรท่ีีไม่สมบูรณ์น้ีมาเป็นไบนารทีรแีบบสมบูรณ์ด้วยการเพ่ิมโหนดใหเ้ต็ม สมบูรณ์น้ีมาเป็นไบนารทีรแีบบสมบูรณ์ด้วยการเพ่ิมโหนดใหเ้ต็ม ((เเป็นไปตามสตูรป็นไปตามสตูร ) ) ซึ่งแสดงได้ดังรูปท่ี ซึ่งแสดงได้ดังรูปท่ี 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
การแทนโครงสรา้งไบนารทีรใีนหน่วยความจำาแบบลิการแทนโครงสรา้งไบนารทีรใีนหน่วยความจำาแบบลิงก์ลิสต์จะชว่ยแก้ปัญหาการสญูเสยีพื้นท่ีวา่งเปล่า งก์ลิสต์จะชว่ยแก้ปัญหาการสญูเสยีพื้นท่ีวา่งเปล่า ในกรณีของหน่วยความจำาแบบสแตติกของอารเ์รย์ในกรณีของหน่วยความจำาแบบสแตติกของอารเ์รย์ได้ และด้วยลิงก์ลิสต์เป็นหน่วยความจำาแบบไดนามกิได้ และด้วยลิงก์ลิสต์เป็นหน่วยความจำาแบบไดนามกินี้เอง จงึสามารถใชห้น่วยความจำาได้อยา่งคุ้มค่า นี้เอง จงึสามารถใชห้น่วยความจำาได้อยา่งคุ้มค่า โดยแต่ละโหนดจะประกอบด้วยขอ้มูลสำาคัญอยู ่โดยแต่ละโหนดจะประกอบด้วยขอ้มูลสำาคัญอยู ่ 3 3ฟลิด์ คือขอ้มูลท่ีบรรจุอยูใ่นโหนด และพอยน์เตอรท่ี์ฟลิด์ คือขอ้มูลท่ีบรรจุอยูใ่นโหนด และพอยน์เตอรท่ี์ชีไ้ปยงัซบัทรดี้านซา้ย กับพอยน์เตอรท่ี์ชีไ้ปยงัซบัทรีชีไ้ปยงัซบัทรดี้านซา้ย กับพอยน์เตอรท่ี์ชีไ้ปยงัซบัทรีด้านขวา ซึ่งเป็นไปได้ดังรูปท่ี ด้านขวา ซึ่งเป็นไปได้ดังรูปท่ี 710.710.
2323วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
การแทนไบนารทีรีการแทนไบนารทีรีด้วยลิงก์ลิสต์ด้วยลิงก์ลิสต์
2424วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
รูปท่ี 710 ภาพแสดงการแทนไบนารทีรดี้วยลิงก์ลิสต์
A
B C
D E F G
A
B C
D E
การท่องเขา้ไปในไบนารทีร ีก็คือการเดินทางเขา้ไปการท่องเขา้ไปในไบนารทีร ีก็คือการเดินทางเขา้ไปในทร ีซึ่งแต่ละโหนดอยา่งน้อยจะถกูกระทำา ในทร ีซึ่งแต่ละโหนดอยา่งน้อยจะถกูกระทำา 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))
เป็นวธิกีารท่องเขา้ไปในทรดี้วยการเดินผ่านเป็นวธิกีารท่องเขา้ไปในทรดี้วยการเดินผ่านจากรูทโหนดลงไปยงัโหนดลกูๆ ซึ่งมทัีง้ฝ่ังจากรูทโหนดลงไปยงัโหนดลกูๆ ซึ่งมทัีง้ฝ่ังด้านซา้ยและด้านขวา ดังนัน้จงึมกีารบญัญัติด้านซา้ยและด้านขวา ดังนัน้จงึมกีารบญัญัติคำายอ่เพื่อใชง้านดังน้ี คำายอ่เพื่อใชง้านดังน้ี N N แทนรูดโหนดแทนรูดโหนด L L แทนซบัทรด้ีานซา้ยแทนซบัทรด้ีานซา้ย R R แทนซบัทรด้ีานขวาแทนซบัทรด้ีานขวา
2626วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
1. 1. วธิกีารท่องแบบแนวลึก วธิกีารท่องแบบแนวลึก ((Depth-First TraversalsDepth-First Traversals))
สำาหรบัวธิกีารท่องแบบแนวลึก จะขอกล่าวเพยีง สำาหรบัวธิกีารท่องแบบแนวลึก จะขอกล่าวเพยีง 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
วธิกีารท่องเขา้ไปในทรแีบบ วธิกีารท่องเขา้ไปในทรแีบบ Preorder Preorder จะจะท่องในรูปแบบ ท่องในรูปแบบ NLR NLR คือ จะเริม่ต้นกระทำาท่ีคือ จะเริม่ต้นกระทำาท่ีรูทโหนดก่อนเป็นลำาดับแรก จากนัน้ก็ตามรูทโหนดก่อนเป็นลำาดับแรก จากนัน้ก็ตามด้วยซบัทรด้ีานขวา โดยพจิารณาจากรูปท่ี ด้วยซบัทรด้ีานขวา โดยพจิารณาจากรูปท่ี
712. ( 712. (aa ) ) ท่ีแสดงถึงการท่องเขา้ไปท่ีแสดงถึงการท่องเขา้ไปแบบ แบบ Preorder Preorder และผลลัพธท่ี์ได้ขณะท่ีซูโดและผลลัพธท่ี์ได้ขณะท่ีซูโดโค้ดของการท่องแบบ โค้ดของการท่องแบบ Preorder Preorder แสดงไว้แสดงไว้ในอัลกอรทึิมท่ี ในอัลกอรทึิมท่ี 72.72.
2828วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
แบบพรอีอรเ์ดอร ์แบบพรอีอรเ์ดอร ์((Preorder Preorder Traversal : NLRTraversal : NLR))
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
วธิกีารท่องเขา้ไปในทรแีบบ วธิกีารท่องเขา้ไปในทรแีบบ Inorder Inorder จะท่องจะท่องในรูปแบบ ในรูปแบบ LNR LNR คือ จะเริม่ต้นกระทำาที่ซบัทรีคือ จะเริม่ต้นกระทำาที่ซบัทรีด้านซา้ยก่อนเป็นลำาดับแรก จากนัน้ก็ตามด้านซา้ยก่อนเป็นลำาดับแรก จากนัน้ก็ตามด้วยรูทโหนด และท้ายสดุก็คือซบัทรดี้านขวา ด้วยรูทโหนด และท้ายสดุก็คือซบัทรดี้านขวา โดยพจิารณาจากรูปท่ี โดยพจิารณาจากรูปท่ี 712. ( 712. (bb ) ) ท่ีท่ีแสดงถึงการท่องเขา้ไปแบบ แสดงถึงการท่องเขา้ไปแบบ Inorder Inorder และและผลลัพธท่ี์ได้ขณะท่ีซูโดโค้ดของการท่องแบบผลลัพธท่ี์ได้ขณะท่ีซูโดโค้ดของการท่องแบบ Inorder Inorder แสดงไวใ้นอัลกอรทึิมท่ี แสดงไวใ้นอัลกอรทึิมท่ี 7373
3030วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
แบบอินออรเ์ดอร ์แบบอินออรเ์ดอร ์((Inorder Inorder Traversal : LNRTraversal : LNR))
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
วธิกีารท่องเขา้ไปในทรแีบบ วธิกีารท่องเขา้ไปในทรแีบบ 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))
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
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
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
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
เป็นวธิกีารท่องเขา้ไปในทรด้ีวยเป็นวธิกีารท่องเขา้ไปในทรด้ีวยการกระทำาทีละระดับจากบนลงล่าง โดยการกระทำาทีละระดับจากบนลงล่าง โดยเริม่ต้นจากรูทโหนด แล้วจงึค่อยเขา้ถึงเริม่ต้นจากรูทโหนด แล้วจงึค่อยเขา้ถึงแต่ละโหนดในแต่ละระดับตามแนวกวา้งแต่ละโหนดในแต่ละระดับตามแนวกวา้งจากซา้ยไปขวา จนกระทัง่ครบทกุระดับ จากซา้ยไปขวา จนกระทัง่ครบทกุระดับ ซึ่งตัวอยา่งการทำางานได้ดังรูปท่ี ซึ่งตัวอยา่งการทำางานได้ดังรูปท่ี 717133
3737วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
2. 2. วธิกีารท่องแบบแนวกวา้ง วธิกีารท่องแบบแนวกวา้ง ((Breadth-First TraversalsBreadth-First Traversals))
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
สำาหรบัการท่องเขา้ไปในทรดี้วยวธิ ีสำาหรบัการท่องเขา้ไปในทรดี้วยวธิ ี((Depth-Depth-FirstFirst ) ) นัน้จะใชส้แต็ก ซึ่งทราบกันดีแล้ววา่ นัน้จะใชส้แต็ก ซึ่งทราบกันดีแล้ววา่ การเรยีกซำ้าหรอืรเีคอรช์นันัน้จะใชโ้ครงสรา้งการเรยีกซำ้าหรอืรเีคอรช์นันัน้จะใชโ้ครงสรา้งขอ้มูลสแต็กชว่ยในการทำางาน ในขณะท่ีการขอ้มูลสแต็กชว่ยในการทำางาน ในขณะท่ีการท่องไปยงัทรแีบบ ท่องไปยงัทรแีบบ ((Breath-FirstBreath-First ) ) นัน้จะใช้นัน้จะใช้โครงสรา้งคิว โดยซูโดโค้ดสำาหรบัการท่องโครงสรา้งคิว โดยซูโดโค้ดสำาหรบัการท่องเขา้ไปในไบนารทีรดี้วยวธิ ีเขา้ไปในไบนารทีรดี้วยวธิ ีBreath-FirstBreath-First แสดงไวใ้นอัลกอรทึิมท่ี แสดงไวใ้นอัลกอรทึิมท่ี 713713
3939วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
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
เอ็กซเ์พรสชนัทรคืีอไบนารทีร ีซึ่งการแทนนิพจน์เอ็กซเ์พรสชนัทรคืีอไบนารทีร ีซึ่งการแทนนิพจน์ในเอ็กซเ์พรสชนัทรนีัน้ จะต้องเป็นไปตามในเอ็กซเ์พรสชนัทรนีัน้ จะต้องเป็นไปตามคณุสมบติัดังต่อไปนี้ คณุสมบติัดังต่อไปนี้ 1. 1. ตัวดำาเนินตัวดำาเนินการหรอืโอเปอแรนด์จะเก็บไวใ้นโหนดใบ การหรอืโอเปอแรนด์จะเก็บไวใ้นโหนดใบ ((Leaf Leaf NodeNode ) 2 . ) 2 . ตัวดำาเนินการหรอืโอเปอเรเตอรจ์ะตัวดำาเนินการหรอืโอเปอเรเตอรจ์ะเก็บไวท่ี้รูทโหนดภายใน เก็บไวท่ี้รูทโหนดภายใน ((Internal NodeInternal Node) ) ท่ีท่ีไมใ่ชโ้หนดใบไมใ่ชโ้หนดใบ 3 . 3 . ซบัทร ีในท่ีน้ีคือนิพจน์ซบัทร ีในท่ีน้ีคือนิพจน์ยอ่ย โดยจะมรีูทโหนดเป็นตัวโอเปอเรเตอร์ยอ่ย โดยจะมรีูทโหนดเป็นตัวโอเปอเรเตอร์
4141วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202
เอ็กซเ์พรสชนัทร ีเอ็กซเ์พรสชนัทร ี((Expression Expression Tree TraversalsTree Traversals))
จากตัวอยา่งดังรูปท่ี จากตัวอยา่งดังรูปท่ี 714. 714. ซึ่งเป็นนิพจน์ซึ่งเป็นนิพจน์เดียวกัน แต่นำาเสนอทัง้ในรูปแบบของนิพจน์เดียวกัน แต่นำาเสนอทัง้ในรูปแบบของนิพจน์แบบ แบบ Infix Infix และ เอ็กซเ์พรสชนัทรีและ เอ็กซเ์พรสชนัทรี
4242วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
รูปท่ี 714 นิพจน์เดียวกันท่ีนำาเสนอในรูปแบบนิพจน์ Infix และเอ็กซเ์พรสชนัทรี
a
+* a
+b b
a * (b + c) + d
จากหลักความรูเ้ก่ียวกับการท่องไปยงัไบนารทีร ีจากหลักความรูเ้ก่ียวกับการท่องไปยงัไบนารทีร ีด้วยวธิกีารท่องแบบแนวลึกท่ีประกอบไปด้วย ด้วยวธิกีารท่องแบบแนวลึกท่ีประกอบไปด้วย 3 3วธิมีาตรฐานนี้เอง จงึเป็นท่ีมาของการนำาไปประยุกต์วธิมีาตรฐานนี้เอง จงึเป็นท่ีมาของการนำาไปประยุกต์ใชง้านเอ็กซเ์พรสชนัทร ีโดยท่ี ใชง้านเอ็กซเ์พรสชนัทร ีโดยท่ี 1 . 1 .เอ็กซเ์พรสชนัทรแีบบ เอ็กซเ์พรสชนัทรแีบบ InfixInfix จะใชว้ธิกีารท่องเขา้ไปจะใชว้ธิกีารท่องเขา้ไปในทรแีบบ ในทรแีบบ InorderInorder 2. 2. เอ็กซเ์พรสชนัทรแีบบ เอ็กซเ์พรสชนัทรแีบบ PostfixPostfix จะใชว้ธิกีารท่องเขา้ไปในทรแีบบ จะใชว้ธิกีารท่องเขา้ไปในทรแีบบ PostorderPostorder 3. 3. เอ็กซเ์พรสชนัทรแีบบ เอ็กซเ์พรสชนัทรแีบบ PrefixPrefix จะใชว้ธิกีารท่องเขา้ไปในทรแีบบ จะใชว้ธิกีารท่องเขา้ไปในทรแีบบ PreorderPreorder
4343วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสัรหสั 41222024122202
สำาหรบัตัวอยา่งการท่องไปยงัเอ็กซเ์พรสชนัทรแีบบ สำาหรบัตัวอยา่งการท่องไปยงัเอ็กซเ์พรสชนัทรแีบบ Infix Infix ในท่ีนี้จะเขยีนอัลกอรทึิม และทำาการพมิพน์ิพจน์ในท่ีนี้จะเขยีนอัลกอรทึิม และทำาการพมิพน์ิพจน์ออกมาดังรูปท่ี ออกมาดังรูปท่ี 715. 715. เมื่อมกีารท่องเพื่อพมิพ์เมื่อมกีารท่องเพื่อพมิพ์นิพจน์ในรูปแบบ นิพจน์ในรูปแบบ Infix Infix จะต้องเพิม่เครื่องหมายวงเล็บจะต้องเพิม่เครื่องหมายวงเล็บเปิดท่ีจุดเริม่ต้นของแต่ละนิพจน์ และจะปิดด้วยเปิดท่ีจุดเริม่ต้นของแต่ละนิพจน์ และจะปิดด้วยเครื่องหมายวงเล็บปิดท่ีสว่นปลายของนิพจน์นัน้ท่ีได้ก็เครื่องหมายวงเล็บปิดท่ีสว่นปลายของนิพจน์นัน้ท่ีได้ก็คือคือ
สำาหรบัซูโดโค้ดของเอ็กซเ์พรสชนัทร ีสำาหรบัซูโดโค้ดของเอ็กซเ์พรสชนัทร ีInfixInfix แสดงไวใ้นแสดงไวใ้นอัลกอรทึิมที่ อัลกอรทึิมที่ 7676
4444วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
การท่องเขา้ไปในการท่องเขา้ไปในเอ็กซเ์พรสชนัทรแีบบ เอ็กซเ์พรสชนัทรแีบบ InfixInfix
(( a * (b + c) + d)
4545วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
รูปท่ี 715 การท่องแบบ Infix ในเอ็กซเ์พรสชนัทรี
a
+* a
+b b
(( a * (b + c) + d)
( )
)
)(
(
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
การท่องแบบ การท่องแบบ Postfix Postfix ในท่ีเอ็กซเ์พรสชนัทร ีจะใช้ในท่ีเอ็กซเ์พรสชนัทร ีจะใช้หลักการเดียวกับ หลักการเดียวกับ Postorder Postorder ในไบนารทีร ีซึ่งไมม่ีในไบนารทีร ีซึ่งไมม่ีความจำาเป็นต้องใชเ้ครื่องหมายวงเล็บแต่อยา่งใด ความจำาเป็นต้องใชเ้ครื่องหมายวงเล็บแต่อยา่งใด ผลลัพธจ์ากการท่องเขา้ไปในเอ็กซเ์พรสชนัทรดีังผลลัพธจ์ากการท่องเขา้ไปในเอ็กซเ์พรสชนัทรดีังรูปท่ี รูปท่ี 715 715 ก็จะได้นิพจน์ดังนี้ก็จะได้นิพจน์ดังนี้
สำาหรบัซูโดโค้ดของการท่องเขา้ไปในเอ็กซเ์พรสชนัสำาหรบัซูโดโค้ดของการท่องเขา้ไปในเอ็กซเ์พรสชนัทรแีบบ ทรแีบบ PostfixPostfix แสดงไวใ้นอัลกอรทึิมท่ี แสดงไวใ้นอัลกอรทึิมท่ี 77.77.
4747วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
การท่องเขา้ไปในเอ็กซเ์พรสการท่องเขา้ไปในเอ็กซเ์พรสชนัทรแีบบ ชนัทรแีบบ PostfixPostfix
a b c + * d +
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
การท่องแบบ การท่องแบบ Prefix Prefix ในท่ีเอ็กซเ์พรสชนัทร ีจะใช้ในท่ีเอ็กซเ์พรสชนัทร ีจะใช้หลักการเดียวกับ หลักการเดียวกับ Preorder Preorder ในไบนารทีร ีซึ่งในไบนารทีร ีซึ่งไมม่คีวามจำาเป็นต้องใชเ้ครื่องหมายวงเล็บแต่ไมม่คีวามจำาเป็นต้องใชเ้ครื่องหมายวงเล็บแต่อยา่งใด ผลลัพธจ์ากการท่องเขา้ไปในเอ็กซเ์พรสอยา่งใด ผลลัพธจ์ากการท่องเขา้ไปในเอ็กซเ์พรสชนัทรดีังรูปท่ี ชนัทรดีังรูปท่ี 715. 715. ก็จะได้นิพจน์ดังนี้ก็จะได้นิพจน์ดังนี้
สำาหรบัซูโดโค้ดของการท่องเขา้ไปในเอ็กซเ์พรสสำาหรบัซูโดโค้ดของการท่องเขา้ไปในเอ็กซเ์พรสชนัทรแีบบ ชนัทรแีบบ PrefixPrefix แสดงไวใ้นอัลกอรทึิมทีแสดงไวใ้นอัลกอรทึิมที่ ่ 7878
4949วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222024122202
การท่องเขา้ไปในเอ็กซเ์พรสการท่องเขา้ไปในเอ็กซเ์พรสชนัทรแีบบ ชนัทรแีบบ PrefixPrefix
+ * a + b c d
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
The End The End Lesson 7 Lesson 7
(Session 1)(Session 1)
5151วชิาโครงสรา้งขอ้มูล วชิาโครงสรา้งขอ้มูล ((Data Structure) Data Structure) รหสั รหสั 41222014122201