อธิบายต้นไม้ 4 ประเภทในโครงสร้างข้อมูล: คุณสมบัติและการใช้งาน

เผยแพร่แล้ว: 2021-06-18

สารบัญ

ต้นไม้ในโครงสร้างข้อมูลคืออะไร?

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

คำศัพท์บางคำที่เกี่ยวข้องกับ ต้นไม้ในโครงสร้างข้อมูล คือ:

  • โหนด : โหนดเป็นเอนทิตีในโครงสร้างข้อมูลแบบต้นไม้ที่มีคีย์หรือค่าและตัวชี้ไปยังโหนดย่อย
  • โหนด ย่อย : โหนดย่อยเป็นลูกหลานของโหนดใด ๆ
  • Leaf nodes: โหนดที่ไม่มีโหนดย่อยและเป็นโหนดล่างสุดในทรี พวกเขาจะเรียกว่าโหนดภายนอก
  • ราก : เป็นจุดบนสุดของต้นไม้
  • โหนดภายใน : โหนดที่มีโหนดชายน์อย่างน้อยหนึ่งโหนด
  • ขอบ: ขอบหมายถึงการเชื่อมต่อระหว่างสองโหนดในทรี
  • ความสูงของโหนด: จำนวนขอบจากโหนดถึงใบไม้ที่ลึกที่สุด
  • ความลึกของโหนด : จำนวนขอบจากรูทถึงโหนด
  • ความสูงของต้นไม้ : ความสูงของโหนดราก
  • ระดับของโหนด : จำนวนสาขาทั้งหมดไปยังโหนดนั้น
  • ป่า: คอลเลกชันของต้นไม้ที่ไม่ปะติดปะต่อ

ประเภทของต้นไม้

1. ต้นไม้ไบนารี

ไบนารีทรี เป็น โครงสร้าง ข้อมูล ประเภทหนึ่ง ที่โหนดหลักทุกโหนดมีโหนดย่อยสูงสุดสองโหนด ตามชื่อที่แนะนำ ไบนารีหมายถึงสอง ดังนั้น แต่ละโหนดสามารถมีได้ 0, 1 หรือ 2 โหนด โครงสร้าง ข้อมูลไบนารีทรี แสดงใน รูปที่ 1 โหนด 1 ในทรีประกอบด้วยตัวชี้สองตัว ตัวหนึ่งสำหรับโหนดย่อยแต่ละโหนด โหนด 2 อีกครั้งมีตัวชี้สองตัวแต่ละตัวสำหรับโหนดย่อยสองโหนด ในขณะที่โหนด 3, 5 และ 6 เป็นโหนดปลายสุด ดังนั้นจึงมีพอยน์เตอร์ที่เป็นโมฆะทั้งในส่วนซ้ายและขวา

รูปที่ 1: การเป็นตัวแทนของต้นไม้ไบนารี ( https://www.javatpoint.com/binary-tree )

คุณสมบัติของไบนารีทรี

  • จำนวนโหนดสูงสุดในแต่ละระดับของ I คือ 2 ผม
  • ความสูงของต้นไม้ใน รูปที่ 1 คือ 3 ซึ่งหมายความว่าจำนวนสูงสุดของโหนดจะเป็น (1+2+4+8) =15
  • ที่ความสูง h จำนวนโหนดสูงสุดที่เป็นไปได้คือ (20 + 21 + 22+….2h) = 2h+1 -1
  • ที่ความสูง h จำนวนโหนดขั้นต่ำที่เป็นไปได้คือ h+1
  • จำนวนโหนดขั้นต่ำจะแสดงถึงต้นไม้ที่มีความสูงสูงสุดและในทางกลับกัน

แม้แต่ต้นไม้ไบนารีสามารถแบ่งออกเป็นต้นไม้ประเภทต่อไปนี้:

  • ต้นไม้ไบนารีแบบเต็ม: เป็นต้นไม้ไบนารีชนิดพิเศษ ในโครงสร้างข้อมูลแบบทรีนี้ ทุกโหนดหลักหรือโหนดภายในจะมีโหนดย่อยสองโหนดหรือไม่มีโหนดย่อย
  • ต้นไม้ไบนารีที่สมบูรณ์แบบ: ในโครงสร้างข้อมูลทรีประเภทนี้ โหนดภายในทุกโหนดมีโหนดย่อยสองโหนด และโหนดปลายสุดทั้งหมดอยู่ในระดับเดียวกัน
  • ต้นไม้ไบนารีที่สมบูรณ์: มันคล้ายกับต้นไม้ไบนารีที่สมบูรณ์โดยมีความแตกต่างเล็กน้อย
  • ทุกระดับจะเต็มไปหมด
  • โหนดใบเอนไปทางซ้ายของต้นไม้
  • ไม่จำเป็นสำหรับโหนดปลายสุดสุดท้ายที่จะมีพี่น้องที่ถูกต้อง กล่าวคือ ต้นไม้ไบนารีที่สมบูรณ์ไม่จำเป็นต้องเป็นต้นไม้ไบนารีแบบเต็ม
  • Degenerate หรือ Pathological Tree: ต้นไม้เหล่านี้มีลูกเดี่ยวทางด้านซ้ายหรือด้านขวาของโหนดหลัก
  • ต้นไม้ไบนารีเบ้: เป็นต้นไม้ทางพยาธิวิทยาหรือเสื่อมโทรมซึ่งต้นไม้ถูกครอบงำโดยโหนดด้านซ้ายหรือโหนดด้านขวา ดังนั้นจึงมีไบนารีทรีเบ้สองประเภท ได้แก่ ไบนารีทรีเบ้ซ้ายหรือไบนารีทรีเบ้ขวา
  • ต้นไม้ไบนารีที่สมดุล: ความแตกต่างระหว่างความสูงของทรีย่อยซ้ายและขวาสำหรับแต่ละโหนดคือ 0 หรือ 1

2. แผนผังการค้นหาไบนารี

โครงสร้างแบบต้นไม้เหล่านี้ไม่เป็นเชิงเส้น และมีหนึ่งโหนดเชื่อมต่อกับโหนดจำนวนหนึ่ง โหนดสามารถเชื่อมต่อกับโหนดย่อยได้ไม่เกินสองโหนด มันถูกเรียกว่าแผนผังการค้นหาแบบไบนารีเพราะ:

  • แต่ละโหนดมีโหนดย่อยสูงสุดสองโหนด
  • สามารถใช้เพื่อค้นหาองค์ประกอบในเวลา 0(log(n)) และด้วยเหตุนี้จึงเรียกว่าแผนผังการค้นหา

รูป: ตัวอย่างของโครงสร้างการค้นหาแบบไบนารี ( https://www.tutorialspoint.com/data_structures_algorithms/binary_search_tree.htm )

คุณสมบัติของแผนผังการค้นหาแบบไบนารีคือ:

  • ค่าในโหนดทั้งหมดของทรีย่อยด้านซ้ายควรน้อยกว่าค่าในโหนดรูท
  • ค่าในโหนดทั้งหมดของทรีย่อยที่ถูกต้องควรมากกว่าค่าในโหนดรูท

3. AVL Tree

ต้นไม้ AVL เป็นประเภทหรือตัวแปรของต้นไม้ไบนารี ประกอบด้วยคุณสมบัติจากทั้งไบนารีและโครงสร้างการค้นหาไบนารี คิดค้นโดย Adelson Velsky Lindas ต้นไม้เหล่านี้มีความสมดุลในตัวเอง ซึ่งหมายความว่าความสูงของต้นไม้ย่อยด้านซ้ายและต้นไม้ย่อยด้านขวามีความสมดุล ยอดคงเหลือนี้วัดจากปัจจัยการทรงตัว

ปัจจัยสมดุล:

  • มันคือความแตกต่างระหว่างทรีย่อยด้านซ้ายและทรีย่อยด้านขวา
  • ค่าของปัจจัยการปรับสมดุลต้องเป็น 0, -1 หรือ 1 ดังนั้น แต่ละโหนดของแผนผัง AVL ควรประกอบด้วยค่าปัจจัยการปรับสมดุล เช่น 0, -1 หรือ 1
  • Balance Factor = (ความสูงของทรีย่อยด้านซ้าย – ความสูงของทรีย่อยด้านขวา)
  • ต้นไม้ AVL ถูกกล่าวขานว่าเป็นต้นไม้ที่สมดุล ถ้าปัจจัยความสมดุลของแต่ละโหนดอยู่ระหว่าง -1 ถึง 1

ค่าของโหนดอื่นที่ไม่ใช่ -1 ถึง 1 ในแผนผัง AVL จะแสดงแผนผังที่ไม่สมดุลซึ่งจำเป็นต้องได้รับการปรับสมดุล

  • หากโหนดมีปัจจัยสมดุลเท่ากับ 1 แสดงว่าทรีย่อยด้านซ้ายสูงกว่าทรีย่อยด้านขวา 1 ระดับ
  • หากโหนดมีปัจจัยสมดุลเป็น 0 แสดงว่าความสูงของทรีย่อยด้านซ้ายและทรีย่อยด้านขวาเท่ากัน
  • หากโหนดมีปัจจัยสมดุล -1 แสดงว่าทรีย่อยด้านขวาสูงกว่าทรีย่อยด้านซ้าย 1 ระดับ หรือทรีย่อยด้านซ้ายต่ำกว่าทรีย่อยด้านขวา 1 ระดับ

4. บี-ทรี

B Tree เป็นรูปแบบทั่วไปของแผนผังการค้นหาแบบไบนารี เป็นที่รู้จักกันว่าต้นไม้ทาง m ที่มีความสูงสมดุล โดยที่ m คือลำดับของต้นไม้ แต่ละโหนดของทรีสามารถมีได้มากกว่าหนึ่งคีย์และโหนดย่อยมากกว่าสองโหนด ในกรณีของไบนารีทรี โหนดลีฟอาจไม่อยู่ในระดับเดียวกัน อย่างไรก็ตาม ในกรณีของ B Tree โหนดลีฟทั้งหมดควรอยู่ในระดับเดียวกัน

คุณสมบัติของ B-tree:

  • คีย์จะถูกจัดเก็บในลำดับที่เพิ่มขึ้นสำหรับแต่ละโหนด x
  • ค่าบูลีน "x.leaf" มีอยู่ในแต่ละโหนด ซึ่งจะเป็นจริงหาก x เป็นลีฟ
  • โหนดภายในควรมีคีย์มากที่สุด "n-1" โดยที่ n คือลำดับของต้นไม้ ควรมีตัวชี้สำหรับเด็กแต่ละคนด้วย
  • โหนดทั้งหมดจะมีอย่างน้อย n ลูกและอย่างน้อย n/2 ลูก ยกเว้นโหนดรูท
  • โหนดใบของต้นไม้มีความลึกเท่ากัน
  • โหนดรูทจะมีอย่างน้อย 1 คีย์และอย่างน้อย 2 รายการย่อย
  • ถ้า n ≥ 1 ดังนั้นสำหรับ n-key B-tree ที่มีความสูง h และระดับต่ำสุด t ≥ 2 h ≥ logt (n+)/2

แอปพลิเคชั่น

  • Binary Search tree สามารถใช้สำหรับค้นหาองค์ประกอบในชุดขององค์ประกอบ
  • Heap tree ใช้สำหรับ heap sort
  • เราเตอร์สมัยใหม่ใช้ต้นไม้ชนิดหนึ่งที่เรียกว่า Tries เพื่อจัดเก็บข้อมูลเส้นทาง
  • ฐานข้อมูลยอดนิยมส่วนใหญ่ใช้ B-Trees และ T-Trees เพื่อจัดเก็บข้อมูล
  • คอมไพเลอร์ใช้แผนผังไวยากรณ์เพื่อตรวจสอบไวยากรณ์ของโปรแกรมที่เขียนทุกโปรแกรม

บทสรุป

โครงสร้างข้อมูลเป็นวิธีที่มีระเบียบในการจัดเก็บข้อมูลเพื่อการจัดการที่ง่ายดายและการจัดการที่มีประสิทธิภาพ มีโครงสร้างข้อมูลประเภทต่างๆ สำหรับข้อมูลประเภทต่างๆ ผู้ใช้จะเลือกตามประเภทของข้อมูลที่ต้องการจัดเก็บ

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

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

โครงการ PG สำหรับผู้บริหารด้านการพัฒนาซอฟต์แวร์ – ความเชี่ยวชาญพิเศษด้านการพัฒนาแบบครบวงจร ดูแลจัดการโดย upGrad และ IIIT-บังกาลอร์ สามารถช่วยเหลือคุณในการปรับปรุงโปรไฟล์ของคุณ และรับโอกาสการจ้างงานที่ดีขึ้นในฐานะโปรแกรมเมอร์

ระบุความแตกต่างระหว่าง Binary Tree และ Binary Search Tree?

แม้ว่า Binary Tree และ Binary Search Tree จะดูคล้ายคลึงกันในแวบแรก แต่ก็แตกต่างกันอย่างมากในหลาย ๆ ด้าน:
ต้นไม้ไบนารี -
1. Binary Tree สามารถมีได้มากที่สุด 2 โหนด และไม่มีลำดับเฉพาะสำหรับโหนด
2. การดำเนินการต่างๆ เช่น การแทรก การลบ และการค้นหาจะค่อนข้างช้ากว่าเนื่องจากไม่มีการจัดลำดับ
3. ต้นไม้ไบนารีเต็ม ต้นไม้ไบนารีขยาย และต้นไม้ไบนารีที่สมบูรณ์เป็นตัวอย่างของต้นไม้ไบนารี
แผนผังการค้นหาไบนารี -
1. Binary Search Tree เป็นไบนารีทรีชนิดพิเศษที่แต่ละโหนดมีแผนผังย่อยด้านขวาและด้านซ้ายซึ่งเป็นทรีการค้นหาแบบไบนารี
2. การดำเนินการทั้งหมดเหล่านี้เร็วกว่าเนื่องจากองค์ประกอบอยู่ในลักษณะที่เป็นระเบียบ
3. AVL tree, tango tree และ splay tree เป็นตัวอย่างของ binary search tree

ต้นไม้ที่ทรงตัวคืออะไรและใช้ที่ไหน?

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