คำถามติดแท็ก binary-tree

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

3
ประโยชน์ของการสำรวจเส้นทางก่อนและหลังการสั่งซื้อของต้นไม้ไบนารี
นี่อาจไร้เดียงสามาก แต่ฉันก็สงสัยว่ามันเป็นบริบทของต้นไม้ไบนารี (ธรรมดาเรียงและสมดุล) ของการสำรวจเส้นทางทั้งหมด: การสั่งซื้อล่วงหน้าครั้งแรกในเชิงลึก ความลึกเป็นลำดับแรก สั่งซื้อโพสต์แรกลึก กว้างแรก สิ่งที่เป็นประโยชน์จริงของคนก่อนและหลังสั่งซื้อคืออะไร ฉันหมายความว่ามีบางประเภทและ / หรือการกำหนดค่าของต้นไม้ไบนารีที่ก่อนและ / หรือการสำรวจเส้นทางการสั่งซื้อจะให้ประโยชน์ (บาง) มากกว่าอีกสอง? AFAICS มีบางประเภทและการกำหนดค่าของต้นไม้ไบนารีซึ่งเรียงตามลำดับและความกว้างก่อนอาจให้ข้อได้เปรียบบางอย่าง: สำหรับต้นไม้ไบนารีที่สมดุลการสำรวจเส้นทางในระดับความลึกใด ๆ จะใช้พื้นที่เก็บข้อมูลหน่วยความจำน้อยกว่าเมื่อเทียบกับความกว้างแรก (เช่นสำหรับต้นไม้ไบนารีที่สมดุลของ 6 หรือ 7 โหนดความสูงคือ 2 ดังนั้นความลึกการสำรวจเส้นทางแรก 2 โหนดในเวลาใดก็ตามในขณะที่ระดับสุดท้ายมี 3 หรือ 4 โหนดดังนั้นการสำรวจเส้นทางแรกที่กว้างที่สุดจะต้องเก็บได้ถึง 3 หรือ 4 โหนดในบางจุด) ในกรณีนี้การใช้การส่งผ่านตามลำดับจะใช้หน่วยความจำน้อยที่สุดและเข้าชมโหนดตามลำดับที่เป็นธรรมชาติ สำหรับต้นไม้ไบนารีที่ไม่สมดุลถ้าใกล้เคียงกับสถานการณ์การแทรกกรณีที่แย่ที่สุดการสำรวจโดยใช้ความกว้างก่อนจะใช้หน่วยความจำน้อยกว่าเมื่อเปรียบเทียบกับการสำรวจเส้นทางแรกที่มีความลึก ดังนั้นในกรณีนี้ความกว้างก่อนเสนอข้อได้เปรียบ การสำรวจเส้นทางตามลำดับมีความได้เปรียบอีกครั้งจากการเยี่ยมชมค่าตามลำดับธรรมชาติ อย่างไรก็ตามฉันไม่สามารถนึกถึงสถานการณ์ที่ก่อนและหลังการสำรวจเส้นทางจะให้ประโยชน์มากกว่าอีกสอง

3
เส้นทางการสั่งซื้อล่วงหน้าเหมือนกับการค้นหาลึกครั้งแรกหรือไม่
ดูเหมือนว่าฉันชอบการสำรวจเส้นทางการสั่งซื้อล่วงหน้าและ DFS เหมือนกันทั้งสองกรณีที่เราสำรวจจากรูทจนถึงสาขาซ้ายและกลับไปที่รูทจากนั้นไปยังสาขาที่ถูกเรียกซ้ำ โปรดแก้ไขให้ฉันได้ไหมถ้าฉันผิด? ขอบคุณล่วงหน้า!

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

2
เป็นไปได้หรือไม่ที่จะเพิ่มความเร็วตารางแฮชโดยใช้แผนผังการค้นหาแบบไบนารีสำหรับการโยงแบบแยกกัน
ฉันต้องการใช้ตารางแฮชโดยใช้ Binary Search Trees เพื่อลดความซับซ้อนในการค้นหาในกระบวนการแยกการเชื่อมโยงจาก O (n) (โดยใช้รายการที่เชื่อมโยง) ถึง O (log n) (โดยใช้ BST) สามารถทำได้และถ้าใช่แล้วได้อย่างไร มันจะง่ายกว่าที่จะเข้าใจว่าการแก้ปัญหาเป็นขั้นตอนการดำเนินการตามตรรกะ ฉันต้องการลดเวลาการค้นหาใน hashtable (บิลด์โดยใช้การโยงแบบแยก) แต่ในเวลาเดียวกันฉันไม่ต้องการเพิ่มเวลาการแทรก สำหรับโครงการของฉันฉันไม่สามารถเปลี่ยนฟังก์ชันแฮชเพื่อลดการชน แต่เนื่องจากความสามารถในการขยายขนาดการชนจึงเกิดขึ้น ฉันพยายามหางานทำเพื่อที่ฉันจะได้ทำงานกับการเข้าถึงที่ดีที่สุดและแทรกเวลาในกรณีที่เกิดการชน ... คือการจัดการสถานะปัจจุบันของสิ่งต่าง ๆ มากกว่าที่จะปรับโครงสร้างอัลกอริทึมทั้งหมด หากไม่ได้เลื่อนออกไปจะต้องปรับโครงสร้าง ดังนั้นความคิดใด ๆ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.