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

เผยแพร่แล้ว: 2021-01-21

สารบัญ

บทนำ

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

โดยหลักแล้ว ต้นไม้จะใช้เพื่อแสดงข้อมูลโดยแสดงความสัมพันธ์แบบลำดับชั้นระหว่างองค์ประกอบต่างๆ ตัวอย่างเช่น สารบัญ แผนภูมิต้นไม้ครอบครัว ในทางเทคนิค ต้นไม้อาจถูกกำหนดเป็นชุดจำกัด 'T' ของโหนดอย่างน้อยหนึ่งโหนดเพื่อให้โหนดถูกกำหนดให้เป็นรากของต้นไม้และโหนดอื่น ๆ จะถูกแบ่งออกเป็น n>=0 ชุดที่ไม่ปะติดปะต่อกัน T1, T2, T3, ท4 …. Tn และถูกเรียกว่าเป็นทรีย่อยหรือลูกของโหนดรูทนั้น

ต้นไม้ไบนารีคืออะไร?

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

โหนดในไบนารีทรีมีสามฟิลด์:

  1. องค์ประกอบข้อมูล – จัดเก็บค่าข้อมูลที่จะจัดเก็บโดยโหนด
  2. ตัวชี้ไปที่ลูกด้านซ้าย – เก็บข้อมูลอ้างอิง (หรือที่อยู่) ไปยังโหนดลูกด้านซ้าย
  3. ตัวชี้ไปยังชายด์ที่ถูกต้อง – เก็บข้อมูลอ้างอิงไปยังโหนดชายด์ด้านขวา

ด้วยวิธีนี้ หลายโหนดจะรวมกันเพื่อสร้าง Binary Tree

ต้นไม้ไบนารีสามารถแสดงเป็น:

แหล่งที่มา

จากรูปด้านบน โหนดรูท 2 มีลูกสองคน (หรือโหนดย่อย) 7 และ 5. 7 เรียกว่าโหนดลูกด้านซ้ายและ 5 เรียกว่าโหนดลูกด้านขวา ด้วยวิธีนี้ โหนดย่อยแต่ละโหนดจะทำหน้าที่เป็นโหนดหลักสำหรับโหนดอื่นๆ หลายโหนด และร่วมกันเป็นตัวแทนของทรีไบนารี

ตรวจสอบ: ประเภทของไบนารีทรี

คำศัพท์ที่ใช้ใน Binary Tree

โหนด : การแสดงพื้นฐานของจุดสิ้นสุดในต้นไม้

Root Node : โหนดบนสุดของไบนารีทรี

โหนด หลัก : หากโหนดเชื่อมต่อกับโหนดอื่นผ่านขอบ จะเรียกว่าโหนดหลัก ในไบนารีทรี โหนดหลักสามารถมีโหนดย่อยได้สูงสุด 2 โหนด

โหนด ย่อย : หากโหนดมีรุ่นก่อน จะเรียกว่าโหนดย่อย

Leaf Node : โหนดที่ไม่มีโหนดย่อยเรียกว่าโหนดปลายสุด

ความลึกของโหนด : คือระยะห่างจากโหนดรูทไปยังโหนดนั้นที่ต้องการวัดความลึก

ความสูงของต้นไม้ : ระยะทางที่ยาวที่สุดจากโหนดรากถึงโหนดใบ

นี่เป็นคำศัพท์พื้นฐานบางประการของไบนารีทรี ด้วยความเข้าใจพื้นฐานเกี่ยวกับ Binary Tree ให้เราก้าวไปสู่ความก้าวหน้าของ Binary Tree ที่รู้จักกันในชื่อ Binary Search Tree

อ่านเพิ่มเติม: อัลกอริทึมการค้นหาแบบไบนารี: ฟังก์ชัน ประโยชน์ เวลา & ความซับซ้อนของพื้นที่

Binary Search Tree คืออะไร

ตามชื่อที่แนะนำ Binary Search Tree หรือ BST เป็นต้นไม้ที่ใช้ในการเรียงลำดับ ดึงข้อมูล และค้นหาข้อมูล นอกจากนี้ยังเป็นประเภทของโครงสร้างข้อมูลที่ไม่เป็นเชิงเส้นซึ่งโหนดถูกจัดเรียงตามลำดับเฉพาะ ดังนั้นจึงเรียกอีกอย่างว่า " Ordered Binary Tree " มีคุณสมบัติดังต่อไปนี้:

  • ทรีย่อยด้านซ้ายของโหนดมีโหนดที่น้อยกว่าคีย์ของโหนดนั้นเท่านั้น
  • แผนผังย่อยด้านขวาของโหนดมีโหนดที่มากกว่าคีย์ของโหนดนั้นเท่านั้น
  • แต่ละโหนดมีคีย์ที่แตกต่างกันและไม่อนุญาตให้ทำซ้ำในแผนผังการค้นหาแบบไบนารี
  • ทรีย่อยด้านซ้ายและขวาจะต้องเป็นแผนผังการค้นหาแบบไบนารีด้วย

ให้เราเห็นภาพแนวคิดนี้เพื่อทำความเข้าใจต้นไม้การค้นหาไบนารีอย่างชัดเจน

แหล่งที่มา

ในรูปด้านบน เราจะเห็นว่าค่าของโหนดรูทคือ 8 เมื่อพิจารณาอย่างละเอียดแล้ว จะพบว่าค่าทั้งหมดในทรีย่อยทางซ้ายนั้นน้อยกว่าค่าของโหนดรูท และค่าทั้งหมดในทรีย่อยทางขวาจะมี ค่าที่มากกว่าโหนดรูท นอกจากนี้ ยังสังเกตว่าแต่ละค่าในแผนผังการค้นหาแบบไบนารีนั้นไม่ซ้ำกันและไม่มีการซ้ำกัน ดังนั้นคุณสมบัติของ Binary Search Tree ที่ระบุไว้ข้างต้นจึงได้รับการตรวจสอบ

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

การดำเนินการค้นหาใน BST –

พิจารณา Binary Search Tree ด้วยค่าที่ระบุด้านล่าง ให้เราเข้าใจวิธีการดำเนินการค้นหาเพื่อรับ 9 จาก Binary Search Tree

แหล่งที่มา

ในการดำเนินการค้นหาแบบไบนารี ขั้นแรกเราจะจัดเรียงจำนวนเต็มทั้งหมดในอาร์เรย์ที่จัดเรียง นี่เรียกว่าเป็นพื้นที่ค้นหา พื้นที่การค้นหานี้จะประกอบด้วยตัวชี้สองตัว เรียกว่าตัวชี้เริ่มต้นและจุดสิ้นสุด อาร์เรย์ของ Binary Search Tree ที่ระบุข้างต้นจะแสดงเป็น:

ขั้นตอนแรกคือการคำนวณค่ากลางของอาร์เรย์และเปรียบเทียบกับค่าที่จะค้นหา เช่น 9 ในกรณีของเรา ทำได้โดยการคำนวณ n/2 โดยที่ n คือจำนวนองค์ประกอบทั้งหมดในอาร์เรย์ (BST) และมีค่าเท่ากับ 6 ดังนั้น องค์ประกอบที่ 3 จึง เป็นองค์ประกอบตรงกลางซึ่งเท่ากับ 5

เมื่อเปรียบเทียบองค์ประกอบตรงกลางกับ 9 และเนื่องจากไม่เท่ากัน (มากกว่า) การค้นหาจะดำเนินการในอาร์เรย์ที่ถูกต้อง ด้วยวิธีนี้ การดำเนินการค้นหาจะลดลงเหลือครึ่งหนึ่ง ดังที่แสดงด้านล่าง:

ในขั้นตอนต่อไป เราจะคำนวณองค์ประกอบตรงกลางและพบว่ามีค่าเท่ากับ 9 ซึ่งตรงกับองค์ประกอบที่เราจะค้นหา

Binary Tree กับ Binary Search Tree –

ตอนนี้เรามีความเข้าใจพื้นฐานเกี่ยวกับทั้ง Binary Tree และ Binary Search Tree แล้ว ให้เราสรุปความแตกต่างระหว่างทั้งสองอย่างรวดเร็ว

พื้นฐานสำหรับการเปรียบเทียบ ต้นไม้ไบนารี แผนผังการค้นหาไบนารี
คำนิยาม Binary Tree เป็นโครงสร้างข้อมูลที่ไม่เป็นเชิงเส้น ซึ่งโหนดสามารถมีได้ 0, 1 หรือ 2 โหนด แต่ละโหนดประกอบด้วยตัวชี้ด้านซ้าย ตัวชี้ด้านขวา และองค์ประกอบข้อมูล Binary Search Tree เป็นไบนารีทรีที่มีการจัดระเบียบซึ่งมีโครงสร้างเป็นโหนดของโหนด ทรีย่อยแต่ละอันต้องมีโครงสร้างเฉพาะนั้นด้วย
โครงสร้าง ไม่มีโครงสร้างองค์กรที่จำเป็นของโหนดในแผนผัง ค่าของทรีย่อยด้านซ้ายของโหนดเฉพาะควรน้อยกว่าโหนดนั้น และค่าทรีย่อยทางขวาควรมากกว่า
ดำเนินการแล้ว การดำเนินการที่สามารถทำได้คือ การลบ การแทรก และการข้ามผ่าน เนื่องจากเป็นไบนารีทรีที่จัดเรียง จึงใช้สำหรับการค้นหา การแทรก และการลบไบนารีที่รวดเร็วและมีประสิทธิภาพ
ประเภท มีหลายประเภท สิ่งที่พบบ่อยที่สุดคือ Complete Binary Tree, Full Binary Tree, Extended Binary Tree ต้นไม้ที่ได้รับความนิยมมากที่สุด ได้แก่ AVL Trees, Splay Trees, Tango Trees, T-Trees

บทสรุป

ดังนั้น เราอนุมานได้ว่าแม้ว่าทั้ง Binary Tree และ Binary Search Tree จะมีโครงสร้างแบบลำดับชั้นร่วมกับคอลเลกชั่นของโหนด แต่ก็มีความแตกต่างกันหลายประการในแอปพลิเคชัน Binary Tree เป็นโครงสร้างพื้นฐานที่มีกฎง่ายๆ ว่าไม่มีพาเรนต์ใดต้องมีลูกมากกว่า 2 ลูก ในขณะที่ Binary Search Tree เป็นตัวแปรของไบนารีทรีตามลำดับเฉพาะที่ควรจัดระเบียบโหนด

หากคุณอยากเรียนรู้เกี่ยวกับ Binary tree กับ Binary search tree โปรดดูที่ IIIT-B & upGrad's PG Diploma in Data Science ซึ่งสร้างขึ้นสำหรับมืออาชีพที่ทำงานและเสนอกรณีศึกษาและโครงการมากกว่า 10+ เวิร์กช็อปเชิงปฏิบัติ การให้คำปรึกษากับอุตสาหกรรม ผู้เชี่ยวชาญ ตัวต่อตัวกับที่ปรึกษาในอุตสาหกรรม การเรียนรู้มากกว่า 400 ชั่วโมงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

เรียนรู้ หลักสูตรวิทยาศาสตร์ข้อมูล ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

เราจะสำรวจ Binary Search Tree ได้อย่างไร?

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

ข้อดีและข้อเสียของ BST คืออะไร?

ต่อไปนี้เป็นข้อดีและข้อเสียของ Binary Search Tree ข้อดีคือ - การดำเนินการต่างๆ เช่น การแทรก การลบ และการค้นหาสามารถทำได้ในเวลา O(log n) โดยที่ n คือจำนวนโหนด องค์ประกอบทั้งหมดใน BST ได้รับการจัดเรียงเพื่อให้เราสามารถสำรวจผ่าน BST ได้อย่างง่ายดายโดยใช้การข้ามผ่านแบบไม่เรียงลำดับ BST สามารถใช้ออกแบบตัวจัดสรรหน่วยความจำได้อย่างมีประสิทธิภาพ เพื่อเพิ่มความเร็วในกระบวนการค้นหาของบล็อกหน่วยความจำ ข้อเสียที่ใหญ่ที่สุดของ Binary Search Tree คือ เราต้องใช้ BST ที่สมดุลเสมอ เช่น AVL และ Red-Black Tree เพราะหากเราไม่ใช้ BST ที่สมดุล การดำเนินการของทรีของเราจะไม่ถูกดำเนินการในเวลาลอการิทึม

แยกความแตกต่างระหว่างต้นไม้ไบนารีแบบเต็มและต้นไม้ไบนารีที่สมบูรณ์

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