SlideShare a Scribd company logo
1 of 20
บทที่ 7 Binary (Tree)บทที่ 7 Binary (Tree)
ทรี (Tree)
โครงสร้างข้อมูลที่ออกแบบมาให้มีลักษณะไม่เป็นเชิงเส้น มีการจัดเก็บ
ข้อมูลเชื่อมโยงกันเป็นระดับชั้น โดยเริ่มจากโหนดแรกที่อยู่บนสุด
เรียกว่า Root Node เชื่อมโยงไปยังโหนดระดับรองลงไป แต่ละระดับก็มี
การเชื่อมโยงโหนดระดับต่อไป ซึ่งเรียกว่า Subtree
โครงสร้างข้อมูลแบบต้นไม้ มีคุณสมบัติดังนี้
1. มีโหนดที่เรียกว่า รากหรือรูต (Root node) , R
2. โหนดที่ไม่ใช่รูตแบ่งย่อยออกเป็น n กลุ่ม โดยที่แต่ละกลุ่มไม่มีโหนด ร่วมกัน
เลย เช่น กลุ่ม T1 , T2 ,…..Tn (n >=0) แต่ละกลุ่มก็เป็นต้นไม้เหมือนกัน จะเรียกว่า
ต้นไม้ย่อย (Subtree)
ลักษณะของทรี
จากรูป
R เป็นรูทของต้นไม้ย่อย A,B,C,D
A เป็นรูทของต้นไม้ย่อย E,F,G
F เป็นรูทของต้นไม้ย่อย J
B เป็นรูทของต้นไม้ย่อย H และ I
ชื่อส่วนต่างๆของต้นไม้
โครงสร้างต้นไม้ (Tree Structure)
R
B XA
DC H Y
GIE
Leaf Nodes
Root Nodes Level 0
Level 1
Level 2
Level 3
Level แสดงถึงหน่วยระยะทางตามแนวดิ่งของโหนดว่าอยู่ห่างจาก
Root Node เป็นระยะเท่าไรและทุกกิ่งมีความยาวเท่ากันคือ 1 หน่วย
โครงสร้างต้นไม้ (Tree Structure)
R
B XA
DC H
Y
G
IE
Leaf Nodes
Root Nodes Level 0
Level 1
Level 2
Level 3
Leaf Node แสดงถึงโหนดที่มี Degree = 0 เช่น C, D, E, I ,G ส่วน
โหนด ที่มี Degree <> 0 เรียกว่า Branch Node หรือ Interior
Node
ต้นไม้แบบไบนารี (Binary Tree)
 ต้นไม้ไบนารีเป็น rooted binary tree ที่ว่างเปล่า หรือประกอบด้วยรูตโหนดและ
ต้นไม้ไบนารี 2 กลุ่มที่ไม่มีโหนดร่วมกัน แต่ละกลุ่มจะมีชื่อเรียก (โดยตาแหน่ง
ที่อยู่หรือที่เขียน) ว่าต้นไม้ย่อยทางซ้าย (left subtree) และต้นไม้ย่อยทางขวา
(right subtree) ตามลาดับ
คาว่า ว่างเปล่า ในนิยามหมายความว่า ต้นไม้ไบนารีต้นนั้นมีแต่รูตโหนดเพียง
โหนดเดียวเท่านั้น
(ก)
(ข)
(ค)
รูป (ก), (ข) และ (ค) เป็นต้นไม้ไบนารี
ต้นไม้ไบนารีแบบสมบูรณ์ (Complete Binary Tree)
 ต้นไม้ไบนารีแบบสมบูรณ์ หมายถึงต้นไม้ไบนารีที่แต่ละโหนดภายในมีโหนด
ย่อยซ้ายและขวา (นั่นคือแต่ละโหนดภายในมี left son และ right son ) และ
โหนดใบ (leaf nodes) ทั้งหลายอยู่ในระดับที่ n รูป (ก) เป็นต้นไม้ไบนารีแบบ
สมบูรณ์ที่มี 3 ระดับ
การแทนต้นไม้ไบนารีในหน่วยความจา
 ต้นไม้ไบนารีสามารถแทนได้ 2 แบบ คือ
1. การแทนโดยอาศัยพอยน์เตอร์
2. การแทนโดยอาศัยแอดเดรสของโหนด หรือการแทนแบบ ซีเควนเชียล
การแทนโดยอาศัยพอยน์เตอร์
 ทาได้โดยให้แต่ละโหนดมีโครงสร้างดังรูปต่อไปนี้
DATA
LLINK RLINK
DATA
LSON RSON
หรือ
โครงสร้างโหนดสาหรับต้นไม้ไบนารี
LLINK หรือ LSON เป็นพอยน์เตอร์ชี้ไปยังต้นไม้ย่อยทางซ้าย
ส่วน RLINK หรือ RSON เป็นพอยน์เตอร์ชี้ไปยังต้นไม้ย่อยทางขวา
การเปลี่ยน Tree ให้เป็น Binary Tree
ต้นไม้แบบออดินารี(ordinary) คือต้นไม้ที่มีดีกรีสูงสุดของแต่ละโหนดเป็นเท่าไรก็
ได้ซึ่งการเปลี่ยนให้เป็น binary tree เป็นการจัดให้แต่ละโหนดมีดีกรีสูงสุดเท่ากับ
สอง มีขั้นตอนดังนี้
1. พิจารณาที่กิ่งทางซ้ายสุดที่อยู่ใต้พ่อเดียวกัน
2. ต่อกิ่งของโหนดทางซ้ายสุดในขั้นที่ 1 ไปทางขวาตามลาดับอาวุโสกับพี่น้องที่
เกิดจากพ่อเดียวกัน
3. ทาขั้นที่ 1 และ 2 จนครบทุกโหนด
4. ปรับมุมของแต่ละกิ่ง ประมาณ 45 องศา
การเปลี่ยน Tree ให้เป็น Binary Tree
ขั้นที่ 1
ขั้นที่ 2
ขั้นที่ 3
ขั้นที่ 4
การท่องต้นไม้ (Tree Traversal)
Tree Traversal หมายถึงการไปยังโหนดเพื่อประมวลผลบางอย่างที่ต้องการกระทากับ
โหนดนั้น เช่น หาข่าวสาร
แบ่งออกเป็น 3 วิธี (ที่นิยมใช้)
1. Pre-Order Traversal (RTLTR)
2. In-Order Traversal (TLRTR)
3. Post-Order Traversal (TLTRR)
reverse Pre-Order Traversal (RTRTL)
reverse In-Order Traversal (TRRTL)
reverse Post-Order Traversal (TRTLR)
B-tree คืออะไร
B-tree ถูกพัฒนาโดย Rudolf Bayer, Edward M.
McCreight เป็น Data Structureประเภท tree อย่างหนึ่ง
แต่แตกต่างกับ Data Structure tree อื่นๆที่โดยมากจะนิยม
แตก node เป็น 2 node แต่ะ B-tree นั้น จะเป็น M-way
Search tree เพื่อทาให้การค้นหาข้อมูลใน tree นั้น มีประสิทธิภาพ
อย่างมาก
การทางานของ B-tree เป็น แตกต่างจากต้นไม้ค้นหาแบบทวิภาค (Binary search tree)
เพราะ BST นั้นมีโครงสร้างข้อมูลแบบ internal searchingschemes ซึ่งข้อมูลที่นามาใช้นั้นมีขนาดเล็ก
และสามารถบรรจุไว้ใน main memory ได้แต่ B-tree เป็นโครงสร้างข้อมูลที่นาไปใช้ในexternal
searching ซึ่งเก็บข้อมูลไว้ใน secondary memory
โครงสร้างของ Binary Search Tree อยู่บนสมมติฐานที่ว่าโครงสร้างทั้งหมดสามารถจัดเก็บอยู่
ในหน่วยความจาของเครื่องคอมพิวเตอร์ได้ถ้าจานวนข้อมูลมีปริมากเกินกว่าที่จะเก็บไว้ในหน่วย
ความของเครื่องได้ทั้งหมดก็หมายความว่าต้องเก็บมันไว้ในแผ่นจานแม่เหล็ก ซึ่งกรณีเช่นนี้Big-O
model ก็จะไม่มีความหมายอีกต่อไป ทั้งนี้เนื่องจากว่าการเข้าถึงข้อมูลในแผ่นจานแม่เหล็กนั้นใช้
ค่าใช้จ่าย (เวลา) ที่แพงมากจนกระทั่ง running time ไม่มีนัยสาคัญใด ๆ อีกต่อไป
นอกจากนี้แล้วยังมี tree ที่ถูกพัฒนาต่อจาก B-tree อีกหลายชนิด เช่น โครงสร้างข้อมูลแบบ B* -
Trees หรือ โครงสร้างข้อมูลแบบ B+ -Tree
การใส่ข้อมูลใน b-tree
เมื่อเราใส่ 3 ไป tree จะแตกออก โดยให้ 3 เป็น root แทน เพราะว่า 1 มีค่า
น้อยกว่า 3 และ 4 มีค่ามากกว่า 3 ดังนี้
การใส่ข้อมูลนี้ขั้นแรกจะใส่จน root เต็มก่อน เมื่อ root เต็มแล้ว จะแตก tree
ออกเป็น child ย่อยๆ ซึ่งการแตกนี้เป็นไปได้หลายกรณี แต่จะแตกโดยใช้หลักการว่า
child และ node ที่อยู่ด้าน ซ้ายทั้งหมด จะมีค่าน้อยกว่า ตัวที่อยู่ตรงกลาง และ
ด้านขวา เช่น จากเดิมเรามี 1 และ 4 อยู่ และกาลังจะใส่ 3 ไปดังรูป
การค้นหาข้อมูล
เริ่มจาก root node แล้วทาการเปรียบเทียบค่าที่ต้องการหา ถ้าค่าที่ต้องการหาไม่ได้อยู่ใน root
node ให้เปรีบบเทียบค่าใน root node ว่าควรเลือกเส้นทางไหนใน node ถัดไป แล้วทาการ
เปรียบเทียบค่าต่อไปเรื่อยๆ จนกว่าจะพบข้อมูลที่ต้องการหาหรือเจอ null
การค้นหาข้อมูล
เริ่มต้นที่ root node โดยจะแยกได้ดังนี้
1.ถ้า node ปัจจุบันเป็น 4-node ให้นาค่าที่อยู่ตรงกลางไปเก็บไว้และลบออกจาก node เพื่อให้ได้3-nodeแล้ว
แยก 3-node ที่เหลือออกเป็น 2-node 2 อัน
- ถ้า node นี้เป็น root node (ซึ่งไม่มี parent) ค่าที่เก็บไว้จะเป็น root ใหม่ของ 2-node 2อัน และความ
สูงของ tree เพิ่มขึ้น 1 แล้วย้อนกลับไปพิจารณาขั้นต่อไปที่ root
- ถ้าไม่ใช่ ดันค่าที่เก็บไว้ขึ้นไปที่ parent node แล้วย้อนกลับไปพิจารณาขั้นต่อไปที่ parent
2.หา child node ที่มีช่วงของค่าที่จะทาการเพิ่ม
3.ถ้า child node นั้นเป็นใบ ใส่ค่าที่จะทาการเพิ่มเข้าไปใน node นั้นเป็นอันเสร็จสิ้น
- ถ้าไม่ใช่ลงไปที่ child node ของ node นั้น และเริ่มทา step 1 ใหม่
จบการนาเสนอจร้า

More Related Content

What's hot

บทที่7
บทที่7บทที่7
บทที่7nunzaza
 
01 ฐานข้อมูลและคลังข้อมูล
01 ฐานข้อมูลและคลังข้อมูล01 ฐานข้อมูลและคลังข้อมูล
01 ฐานข้อมูลและคลังข้อมูลpop Jaturong
 
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูล
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูลความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูล
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูลKhanpetz'Kao Boreds
 
บทที่ 1
บทที่ 1บทที่ 1
บทที่ 1nunzaza
 
ความรู้เบื้องต้นเกี่ยวกับระบบฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับระบบฐานข้อมูลความรู้เบื้องต้นเกี่ยวกับระบบฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับระบบฐานข้อมูลNithiwan Rungrangsri
 
บทที่ 2 สถาปัตยกรรม
บทที่ 2 สถาปัตยกรรมบทที่ 2 สถาปัตยกรรม
บทที่ 2 สถาปัตยกรรมPrinceStorm Nueng
 
บทที่ 2 ทฤษฎีพื้นฐานเกี่ยวกับการจัดเก็บและค้นคืนสารสนเทศ
บทที่ 2 ทฤษฎีพื้นฐานเกี่ยวกับการจัดเก็บและค้นคืนสารสนเทศบทที่ 2 ทฤษฎีพื้นฐานเกี่ยวกับการจัดเก็บและค้นคืนสารสนเทศ
บทที่ 2 ทฤษฎีพื้นฐานเกี่ยวกับการจัดเก็บและค้นคืนสารสนเทศSrion Janeprapapong
 
บทที่1 ความรู้พื้นฐาน
บทที่1 ความรู้พื้นฐานบทที่1 ความรู้พื้นฐาน
บทที่1 ความรู้พื้นฐานtapabnum
 
สถาปัตยกรรมและการออกแบบฐานข้อมูล
สถาปัตยกรรมและการออกแบบฐานข้อมูลสถาปัตยกรรมและการออกแบบฐานข้อมูล
สถาปัตยกรรมและการออกแบบฐานข้อมูลN'Ice Thnaphop
 
ใบความรู้ เรื่อง ระบบเครือข่ายคอมพิวเตอร์
ใบความรู้ เรื่อง ระบบเครือข่ายคอมพิวเตอร์ใบความรู้ เรื่อง ระบบเครือข่ายคอมพิวเตอร์
ใบความรู้ เรื่อง ระบบเครือข่ายคอมพิวเตอร์kruumawan
 
ประวัติความเป็นมาของ อินเทอร์เน็ต
ประวัติความเป็นมาของ อินเทอร์เน็ตประวัติความเป็นมาของ อินเทอร์เน็ต
ประวัติความเป็นมาของ อินเทอร์เน็ตguest832105
 
Database
DatabaseDatabase
Databasepaween
 
หน่วยการเรียนรู้ที่ 2 โครงสร้างข้อมูล
หน่วยการเรียนรู้ที่ 2 โครงสร้างข้อมูลหน่วยการเรียนรู้ที่ 2 โครงสร้างข้อมูล
หน่วยการเรียนรู้ที่ 2 โครงสร้างข้อมูลWareerut Suwannalop
 
การพัฒนาเอกสารออนไลน์ขั้นสูง Intro
การพัฒนาเอกสารออนไลน์ขั้นสูง Introการพัฒนาเอกสารออนไลน์ขั้นสูง Intro
การพัฒนาเอกสารออนไลน์ขั้นสูง IntroJenchoke Tachagomain
 

What's hot (20)

บทที่7
บทที่7บทที่7
บทที่7
 
01 ฐานข้อมูลและคลังข้อมูล
01 ฐานข้อมูลและคลังข้อมูล01 ฐานข้อมูลและคลังข้อมูล
01 ฐานข้อมูลและคลังข้อมูล
 
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูล
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูลความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูล
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูล
 
Power Point
Power PointPower Point
Power Point
 
บทที่ 1
บทที่ 1บทที่ 1
บทที่ 1
 
ความรู้เบื้องต้นเกี่ยวกับระบบฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับระบบฐานข้อมูลความรู้เบื้องต้นเกี่ยวกับระบบฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับระบบฐานข้อมูล
 
ฐานข้อมูลเชิงสัมพันธ์
ฐานข้อมูลเชิงสัมพันธ์ฐานข้อมูลเชิงสัมพันธ์
ฐานข้อมูลเชิงสัมพันธ์
 
แนวการสอบ ม.4
แนวการสอบ ม.4แนวการสอบ ม.4
แนวการสอบ ม.4
 
บทที่ 2 สถาปัตยกรรม
บทที่ 2 สถาปัตยกรรมบทที่ 2 สถาปัตยกรรม
บทที่ 2 สถาปัตยกรรม
 
บทที่ 2 ทฤษฎีพื้นฐานเกี่ยวกับการจัดเก็บและค้นคืนสารสนเทศ
บทที่ 2 ทฤษฎีพื้นฐานเกี่ยวกับการจัดเก็บและค้นคืนสารสนเทศบทที่ 2 ทฤษฎีพื้นฐานเกี่ยวกับการจัดเก็บและค้นคืนสารสนเทศ
บทที่ 2 ทฤษฎีพื้นฐานเกี่ยวกับการจัดเก็บและค้นคืนสารสนเทศ
 
Mi sch3
Mi sch3Mi sch3
Mi sch3
 
บทที่1 ความรู้พื้นฐาน
บทที่1 ความรู้พื้นฐานบทที่1 ความรู้พื้นฐาน
บทที่1 ความรู้พื้นฐาน
 
สถาปัตยกรรมและการออกแบบฐานข้อมูล
สถาปัตยกรรมและการออกแบบฐานข้อมูลสถาปัตยกรรมและการออกแบบฐานข้อมูล
สถาปัตยกรรมและการออกแบบฐานข้อมูล
 
it-09-05
it-09-05it-09-05
it-09-05
 
ใบความรู้ เรื่อง ระบบเครือข่ายคอมพิวเตอร์
ใบความรู้ เรื่อง ระบบเครือข่ายคอมพิวเตอร์ใบความรู้ เรื่อง ระบบเครือข่ายคอมพิวเตอร์
ใบความรู้ เรื่อง ระบบเครือข่ายคอมพิวเตอร์
 
ประวัติความเป็นมาของ อินเทอร์เน็ต
ประวัติความเป็นมาของ อินเทอร์เน็ตประวัติความเป็นมาของ อินเทอร์เน็ต
ประวัติความเป็นมาของ อินเทอร์เน็ต
 
Database
DatabaseDatabase
Database
 
หน่วยการเรียนรู้ที่ 2 โครงสร้างข้อมูล
หน่วยการเรียนรู้ที่ 2 โครงสร้างข้อมูลหน่วยการเรียนรู้ที่ 2 โครงสร้างข้อมูล
หน่วยการเรียนรู้ที่ 2 โครงสร้างข้อมูล
 
การพัฒนาเอกสารออนไลน์ขั้นสูง Intro
การพัฒนาเอกสารออนไลน์ขั้นสูง Introการพัฒนาเอกสารออนไลน์ขั้นสูง Intro
การพัฒนาเอกสารออนไลน์ขั้นสูง Intro
 
Computer Network
Computer NetworkComputer Network
Computer Network
 

Similar to Chaiyporn01

โครงสร้างข้อมูลแบบต้นไม้
โครงสร้างข้อมูลแบบต้นไม้โครงสร้างข้อมูลแบบต้นไม้
โครงสร้างข้อมูลแบบต้นไม้tumetr
 
บทที่ 3 ฐานข้อมูลและการค้นคืน
บทที่ 3 ฐานข้อมูลและการค้นคืนบทที่ 3 ฐานข้อมูลและการค้นคืน
บทที่ 3 ฐานข้อมูลและการค้นคืนSrion Janeprapapong
 
งานนำเสนอ1คอม
งานนำเสนอ1คอมงานนำเสนอ1คอม
งานนำเสนอ1คอมkanjana123
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1Kittipong Joy
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูลYongyut Nintakan
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูลYongyut Nintakan
 

Similar to Chaiyporn01 (7)

โครงสร้างข้อมูลแบบต้นไม้
โครงสร้างข้อมูลแบบต้นไม้โครงสร้างข้อมูลแบบต้นไม้
โครงสร้างข้อมูลแบบต้นไม้
 
Tree01
Tree01Tree01
Tree01
 
บทที่ 3 ฐานข้อมูลและการค้นคืน
บทที่ 3 ฐานข้อมูลและการค้นคืนบทที่ 3 ฐานข้อมูลและการค้นคืน
บทที่ 3 ฐานข้อมูลและการค้นคืน
 
งานนำเสนอ1คอม
งานนำเสนอ1คอมงานนำเสนอ1คอม
งานนำเสนอ1คอม
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูล
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูล
 

Chaiyporn01

  • 1.
  • 2. บทที่ 7 Binary (Tree)บทที่ 7 Binary (Tree) ทรี (Tree) โครงสร้างข้อมูลที่ออกแบบมาให้มีลักษณะไม่เป็นเชิงเส้น มีการจัดเก็บ ข้อมูลเชื่อมโยงกันเป็นระดับชั้น โดยเริ่มจากโหนดแรกที่อยู่บนสุด เรียกว่า Root Node เชื่อมโยงไปยังโหนดระดับรองลงไป แต่ละระดับก็มี การเชื่อมโยงโหนดระดับต่อไป ซึ่งเรียกว่า Subtree โครงสร้างข้อมูลแบบต้นไม้ มีคุณสมบัติดังนี้ 1. มีโหนดที่เรียกว่า รากหรือรูต (Root node) , R 2. โหนดที่ไม่ใช่รูตแบ่งย่อยออกเป็น n กลุ่ม โดยที่แต่ละกลุ่มไม่มีโหนด ร่วมกัน เลย เช่น กลุ่ม T1 , T2 ,…..Tn (n >=0) แต่ละกลุ่มก็เป็นต้นไม้เหมือนกัน จะเรียกว่า ต้นไม้ย่อย (Subtree) ลักษณะของทรี
  • 3.
  • 4. จากรูป R เป็นรูทของต้นไม้ย่อย A,B,C,D A เป็นรูทของต้นไม้ย่อย E,F,G F เป็นรูทของต้นไม้ย่อย J B เป็นรูทของต้นไม้ย่อย H และ I ชื่อส่วนต่างๆของต้นไม้
  • 5. โครงสร้างต้นไม้ (Tree Structure) R B XA DC H Y GIE Leaf Nodes Root Nodes Level 0 Level 1 Level 2 Level 3 Level แสดงถึงหน่วยระยะทางตามแนวดิ่งของโหนดว่าอยู่ห่างจาก Root Node เป็นระยะเท่าไรและทุกกิ่งมีความยาวเท่ากันคือ 1 หน่วย
  • 6. โครงสร้างต้นไม้ (Tree Structure) R B XA DC H Y G IE Leaf Nodes Root Nodes Level 0 Level 1 Level 2 Level 3 Leaf Node แสดงถึงโหนดที่มี Degree = 0 เช่น C, D, E, I ,G ส่วน โหนด ที่มี Degree <> 0 เรียกว่า Branch Node หรือ Interior Node
  • 7. ต้นไม้แบบไบนารี (Binary Tree)  ต้นไม้ไบนารีเป็น rooted binary tree ที่ว่างเปล่า หรือประกอบด้วยรูตโหนดและ ต้นไม้ไบนารี 2 กลุ่มที่ไม่มีโหนดร่วมกัน แต่ละกลุ่มจะมีชื่อเรียก (โดยตาแหน่ง ที่อยู่หรือที่เขียน) ว่าต้นไม้ย่อยทางซ้าย (left subtree) และต้นไม้ย่อยทางขวา (right subtree) ตามลาดับ คาว่า ว่างเปล่า ในนิยามหมายความว่า ต้นไม้ไบนารีต้นนั้นมีแต่รูตโหนดเพียง โหนดเดียวเท่านั้น
  • 8. (ก) (ข) (ค) รูป (ก), (ข) และ (ค) เป็นต้นไม้ไบนารี
  • 9. ต้นไม้ไบนารีแบบสมบูรณ์ (Complete Binary Tree)  ต้นไม้ไบนารีแบบสมบูรณ์ หมายถึงต้นไม้ไบนารีที่แต่ละโหนดภายในมีโหนด ย่อยซ้ายและขวา (นั่นคือแต่ละโหนดภายในมี left son และ right son ) และ โหนดใบ (leaf nodes) ทั้งหลายอยู่ในระดับที่ n รูป (ก) เป็นต้นไม้ไบนารีแบบ สมบูรณ์ที่มี 3 ระดับ
  • 10. การแทนต้นไม้ไบนารีในหน่วยความจา  ต้นไม้ไบนารีสามารถแทนได้ 2 แบบ คือ 1. การแทนโดยอาศัยพอยน์เตอร์ 2. การแทนโดยอาศัยแอดเดรสของโหนด หรือการแทนแบบ ซีเควนเชียล
  • 11. การแทนโดยอาศัยพอยน์เตอร์  ทาได้โดยให้แต่ละโหนดมีโครงสร้างดังรูปต่อไปนี้ DATA LLINK RLINK DATA LSON RSON หรือ โครงสร้างโหนดสาหรับต้นไม้ไบนารี LLINK หรือ LSON เป็นพอยน์เตอร์ชี้ไปยังต้นไม้ย่อยทางซ้าย ส่วน RLINK หรือ RSON เป็นพอยน์เตอร์ชี้ไปยังต้นไม้ย่อยทางขวา
  • 12. การเปลี่ยน Tree ให้เป็น Binary Tree ต้นไม้แบบออดินารี(ordinary) คือต้นไม้ที่มีดีกรีสูงสุดของแต่ละโหนดเป็นเท่าไรก็ ได้ซึ่งการเปลี่ยนให้เป็น binary tree เป็นการจัดให้แต่ละโหนดมีดีกรีสูงสุดเท่ากับ สอง มีขั้นตอนดังนี้ 1. พิจารณาที่กิ่งทางซ้ายสุดที่อยู่ใต้พ่อเดียวกัน 2. ต่อกิ่งของโหนดทางซ้ายสุดในขั้นที่ 1 ไปทางขวาตามลาดับอาวุโสกับพี่น้องที่ เกิดจากพ่อเดียวกัน 3. ทาขั้นที่ 1 และ 2 จนครบทุกโหนด 4. ปรับมุมของแต่ละกิ่ง ประมาณ 45 องศา
  • 13. การเปลี่ยน Tree ให้เป็น Binary Tree ขั้นที่ 1 ขั้นที่ 2 ขั้นที่ 3 ขั้นที่ 4
  • 14. การท่องต้นไม้ (Tree Traversal) Tree Traversal หมายถึงการไปยังโหนดเพื่อประมวลผลบางอย่างที่ต้องการกระทากับ โหนดนั้น เช่น หาข่าวสาร แบ่งออกเป็น 3 วิธี (ที่นิยมใช้) 1. Pre-Order Traversal (RTLTR) 2. In-Order Traversal (TLRTR) 3. Post-Order Traversal (TLTRR) reverse Pre-Order Traversal (RTRTL) reverse In-Order Traversal (TRRTL) reverse Post-Order Traversal (TRTLR)
  • 15. B-tree คืออะไร B-tree ถูกพัฒนาโดย Rudolf Bayer, Edward M. McCreight เป็น Data Structureประเภท tree อย่างหนึ่ง แต่แตกต่างกับ Data Structure tree อื่นๆที่โดยมากจะนิยม แตก node เป็น 2 node แต่ะ B-tree นั้น จะเป็น M-way Search tree เพื่อทาให้การค้นหาข้อมูลใน tree นั้น มีประสิทธิภาพ อย่างมาก
  • 16. การทางานของ B-tree เป็น แตกต่างจากต้นไม้ค้นหาแบบทวิภาค (Binary search tree) เพราะ BST นั้นมีโครงสร้างข้อมูลแบบ internal searchingschemes ซึ่งข้อมูลที่นามาใช้นั้นมีขนาดเล็ก และสามารถบรรจุไว้ใน main memory ได้แต่ B-tree เป็นโครงสร้างข้อมูลที่นาไปใช้ในexternal searching ซึ่งเก็บข้อมูลไว้ใน secondary memory โครงสร้างของ Binary Search Tree อยู่บนสมมติฐานที่ว่าโครงสร้างทั้งหมดสามารถจัดเก็บอยู่ ในหน่วยความจาของเครื่องคอมพิวเตอร์ได้ถ้าจานวนข้อมูลมีปริมากเกินกว่าที่จะเก็บไว้ในหน่วย ความของเครื่องได้ทั้งหมดก็หมายความว่าต้องเก็บมันไว้ในแผ่นจานแม่เหล็ก ซึ่งกรณีเช่นนี้Big-O model ก็จะไม่มีความหมายอีกต่อไป ทั้งนี้เนื่องจากว่าการเข้าถึงข้อมูลในแผ่นจานแม่เหล็กนั้นใช้ ค่าใช้จ่าย (เวลา) ที่แพงมากจนกระทั่ง running time ไม่มีนัยสาคัญใด ๆ อีกต่อไป นอกจากนี้แล้วยังมี tree ที่ถูกพัฒนาต่อจาก B-tree อีกหลายชนิด เช่น โครงสร้างข้อมูลแบบ B* - Trees หรือ โครงสร้างข้อมูลแบบ B+ -Tree
  • 17. การใส่ข้อมูลใน b-tree เมื่อเราใส่ 3 ไป tree จะแตกออก โดยให้ 3 เป็น root แทน เพราะว่า 1 มีค่า น้อยกว่า 3 และ 4 มีค่ามากกว่า 3 ดังนี้ การใส่ข้อมูลนี้ขั้นแรกจะใส่จน root เต็มก่อน เมื่อ root เต็มแล้ว จะแตก tree ออกเป็น child ย่อยๆ ซึ่งการแตกนี้เป็นไปได้หลายกรณี แต่จะแตกโดยใช้หลักการว่า child และ node ที่อยู่ด้าน ซ้ายทั้งหมด จะมีค่าน้อยกว่า ตัวที่อยู่ตรงกลาง และ ด้านขวา เช่น จากเดิมเรามี 1 และ 4 อยู่ และกาลังจะใส่ 3 ไปดังรูป
  • 18. การค้นหาข้อมูล เริ่มจาก root node แล้วทาการเปรียบเทียบค่าที่ต้องการหา ถ้าค่าที่ต้องการหาไม่ได้อยู่ใน root node ให้เปรีบบเทียบค่าใน root node ว่าควรเลือกเส้นทางไหนใน node ถัดไป แล้วทาการ เปรียบเทียบค่าต่อไปเรื่อยๆ จนกว่าจะพบข้อมูลที่ต้องการหาหรือเจอ null
  • 19. การค้นหาข้อมูล เริ่มต้นที่ root node โดยจะแยกได้ดังนี้ 1.ถ้า node ปัจจุบันเป็น 4-node ให้นาค่าที่อยู่ตรงกลางไปเก็บไว้และลบออกจาก node เพื่อให้ได้3-nodeแล้ว แยก 3-node ที่เหลือออกเป็น 2-node 2 อัน - ถ้า node นี้เป็น root node (ซึ่งไม่มี parent) ค่าที่เก็บไว้จะเป็น root ใหม่ของ 2-node 2อัน และความ สูงของ tree เพิ่มขึ้น 1 แล้วย้อนกลับไปพิจารณาขั้นต่อไปที่ root - ถ้าไม่ใช่ ดันค่าที่เก็บไว้ขึ้นไปที่ parent node แล้วย้อนกลับไปพิจารณาขั้นต่อไปที่ parent 2.หา child node ที่มีช่วงของค่าที่จะทาการเพิ่ม 3.ถ้า child node นั้นเป็นใบ ใส่ค่าที่จะทาการเพิ่มเข้าไปใน node นั้นเป็นอันเสร็จสิ้น - ถ้าไม่ใช่ลงไปที่ child node ของ node นั้น และเริ่มทา step 1 ใหม่