สิ่งที่คุณต้องการนั้นเป็นไปได้เนื่องจากข้อ จำกัด ของคุณ
การวิเคราะห์
จุดแข็งของตารางแฮชคือการค้นหาและแทรกความเร็วที่รวดเร็ว เพื่อให้ได้ความเร็วนั้นเราจะต้องละทิ้งรูปลักษณ์ใด ๆ ของการสั่งซื้อในตาราง: รายการต่างๆนั้นจะวนเวียนอยู่ รายการสามารถใช้เป็นรายการในตารางได้เนื่องจากในขณะที่การแวะผ่านคือ O (n) รายการมักจะสั้นหากสมมติว่าตารางแฮชมีขนาดใหญ่พอสมควรและวัตถุที่เก็บไว้ในตารางจะถูกแฮชโดยใช้อัลกอริทึมการแฮชคุณภาพดี
แผนผังการค้นหาแบบไบนารี (BST) มีการแทรกและค้นหาแบบรวดเร็วที่ O (บันทึก2 n) นอกจากนี้ยังมีข้อ จำกัด เกี่ยวกับองค์ประกอบที่จัดเก็บ: ต้องมีวิธีการสั่งซื้อองค์ประกอบ เมื่อพิจารณาสององค์ประกอบAและB ที่เก็บไว้ในต้นไม้จะต้องมีความเป็นไปได้ที่จะตรวจสอบว่าAมาก่อนBหรือมีลำดับที่เท่าเทียมกันหรือไม่
ตารางแฮชไม่มีข้อ จำกัด ดังกล่าว: องค์ประกอบในตารางแฮชต้องมีคุณสมบัติสองประการ ก่อนอื่นจะต้องมีวิธีการตรวจสอบว่าพวกเขาจะเทียบเท่า; ประการที่สองจะต้องมีวิธีการคำนวณรหัสแฮชที่กำหนดขึ้น คำสั่งซื้อไม่ใช่ข้อกำหนด
หากองค์ประกอบตารางแฮชของคุณมีคำสั่งซื้อคุณสามารถใช้ BST เป็นรายการตารางแฮชเพื่อเก็บวัตถุด้วยรหัสแฮชเดียวกัน (การชนกัน) อย่างไรก็ตามเนื่องจาก BST มีการค้นหาและแทรกO (บันทึก2 n) นั่นหมายความว่ากรณีที่เลวร้ายที่สุดสำหรับโครงสร้างทั้งหมด (ตารางแฮชบวก BST) เป็นเทคนิคที่ดีกว่าการใช้รายการเป็นรายการตาราง ขึ้นอยู่กับการใช้งาน BST นั้นจะต้องใช้พื้นที่เก็บข้อมูลมากกว่ารายการ แต่มีแนวโน้มที่จะไม่มากขึ้น
โปรดทราบว่าโดยทั่วไปค่าโสหุ้ยและพฤติกรรมของ BST จะไม่นำสิ่งใดมาสู่สถานการณ์ในโลกแห่งความจริงในฐานะที่เป็นที่เก็บถังแฮชของตารางซึ่งเป็นเหตุผลว่าทำไมผลงานที่ไม่ดีทางทฤษฎีของรายการเป็นที่ยอมรับ กล่าวอีกนัยหนึ่งตารางแฮชชดเชยความอ่อนแอของรายการโดยการวางรายการน้อยลงในแต่ละรายการ (ฝากข้อมูล) อย่างไรก็ตาม : ปัญหาระบุไว้โดยเฉพาะว่าตารางแฮชไม่สามารถเพิ่มขนาดได้และการชนกันบ่อยกว่าปกติในตารางแฮช
การดำเนินงาน
ฉันจะไม่ใส่รหัสที่นี่เพราะสุจริตไม่จำเป็นจริงๆและคุณไม่ได้ให้ภาษา
สิ่งที่ฉันจะทำคือเพียงแค่คัดลอกตารางแฮชมาตรฐานใด ๆ ที่ไลบรารีมาตรฐานของภาษาของคุณมีอยู่ในคลาสใหม่จากนั้นเปลี่ยนประเภทที่จัดเก็บตารางจากรายการไปยังทรี ทั้งนี้ขึ้นอยู่กับภาษาและห้องสมุดมาตรฐานของสิ่งนี้อาจเป็นเรื่องเล็กน้อยที่ต้องทำ
ปกติฉันจะไม่สนับสนุนการคัดลอกและวางรหัสเช่นนี้ แต่ก็เป็นวิธีที่ง่ายที่จะได้รับข้อมูลโครงสร้างการต่อสู้ผ่านการทดสอบมากได้อย่างรวดเร็ว