powerpoint presentationinstructor.ru.ac.th/urai/cos2101/cos2101_12.pdf · 2014-09-23 ·...
TRANSCRIPT
โครงสรา้งรปูตน้ไม(้Tree structure)เป็นการน าตวัแปรชนดิตวัชีเ้ก็บโหนดของขอ้มลูไม่เป็นเชิงเสน้(Non-linear list) แตจ่ดัเก็บเป็นล าดบัชัน้ (Hierarchical) โดยล าดบัชัน้บนสดุจะท าหนา้ท่ีคลา้ยรากของตน้ไม ้และล าดบัชัน้ถดัๆไปเปรียบเสมือนกิ่งของตน้ไม ้แตล่ะ
กิ่งของตน้ไมส้ามารถแตกเป็นกิ่งยอ่ยๆไดใ้นล าดบัชัน้ถัดๆไปจนกระทัง่เป็นใบ
( )
โครงสรา้งรปูตน้ไมท้ัว่ไป ประกอบดว้ย เซตของโหนดขอ้มลู โดย
โหนดขอ้มลูจะมลีกัษณะดงันี้
โหนดพิเศษ เรียกว่าราก(Root) เป็นโหนดบนสดุของล าดบัชัน้
โหนดอื่นๆ ถกูแบ่งเป็นเซตยอ่ยๆ จะเรียกว่าตน้ไมย้่อย(Subtree)
V0
V7 V9V1
V10V3V2
ตน้ไมแ้บบทวิภาคเป็นโครงสรา้งรปูตน้ไมช้นดิหนึง่ที่มกีิ่งแยกออกมา(Out node) ของทกุๆ โหนดนอ้ยกว่าหรือเท่ากบั 2
แตถ่า้ทกุโหนดมกีิ่งท่ีแยกออกมาเท่ากบั 2 หรือ 0 เรียกว่าโครงสรา้งรปูตน้ไมน้ีว่้าตน้ไมแ้บบทวิภาคสมบรูณ(์Full binary tree)
A
CB
D GE F
A
CB
D
A
EB
C D
Sequential link เป็นการแทนตน้ไมแ้บบทวิภาคเป็นตน้ไมแ้บบทวิภาคสมบรูณ์
โปรแกรมเมอรส์ามารถก าหนดโครงสรา้งขอ้มลูเป็นแถวล าดบั 1 มติใิหม้ขีนาดเท่ากบั
ตน้ไมแ้บบเต็มตน้โดยเก็บรากที่ต าแหนง่แรกในท่ีนีค้ือ 0 ดงันี้
A
CB
D FE
0
1 2
x43 65
A FEDCB
0 654321
Link allocation เป็นการจดัเก็บขอ้มลูโดยใชร้ายการโยง โดยขอ้มลูแตล่ะ
โหนด
ประกอบดว้ยตวัชี ้2 ตวั โดยตวัชีต้วัแรกเก็บเลขท่ีอยู่ของโหนดที่เป็นตน้ไมย้่อย
ทางซา้ยและตวัชีอี้กตวัหนึง่จะเชือ่มโยงโดยเก็บเลขที่อยู่ของโหนดที่เป็นตน้ไมย้่อย
ทางขวา
โดย llink เป็นตวัชีท้ี่ ชีไ้ปยงัตน้ไมย้่อยทางซา้ย(Left sub tree)
data เป็นตวัแปรที่ใชส้ าหรบั เก็บขอ้มลู
rlink เป็นตวัชี ้ชีไ้ปยงัตน้ไมย้่อยทางขวา(Right sub tree)
A CB
llink rlinkdata
ตน้ไมค้น้หาแบบทวิภาคเป็นตน้ไมแ้บบทวิภาคชนดิหนึง่ มกีฎเกณฑใ์นการ
สรา้งดงันี้
ค่าที่เก็บที่ราก(Root) ตอ้งมคี่ามากกว่าขอ้มลูตน้ไมย้่อยทางซา้ยของทกุโหนด
ค่าที่เก็บในตน้ไมย้่อยทางขวา ตอ้งมากกว่าหรือเทา่กบัราก(Root) ทกุๆ โหนดแตล่ะตน้ไมย้่อยตอ้งมคีณุสมบตัติามขอ้ที่ 1 และ 2
8
root
2 13
5 9
7
8
9
7
5
2 13
34
root
23 42
75
53
98
62
a*b-c*d-e
และจงสรา้งโครงสรา้งตน้ไมจ้ากนพิจนน์ี้
a+b-c*d/e
และจงสรา้งโครงสรา้งตน้ไมจ้ากนพิจนน์ี้