คำตอบนี้รวมความคิดเห็นของฉันกับคำถามและขยายออก
การดำเนินการช่วงย่อยบนต้นไม้สีแดงดำสามารถดำเนินการได้ในเวลาที่เลวร้ายที่สุด O (log n) โดยที่ n คือจำนวนองค์ประกอบในแผนผังต้นกำเนิด เนื่องจากต้นไม้ที่ได้จะมีบางโหนดร่วมกับต้นตำรับวิธีการนี้จึงเหมาะสมเฉพาะถ้าต้นไม้นั้นไม่เปลี่ยนรูป (หรือต้นไม้สามารถเปลี่ยนแปลงได้ แต่ต้นไม้เดิมนั้นไม่ต้องการอีกต่อไป)
ประกาศแรกว่าการดำเนินการช่วงย่อยสามารถดำเนินการได้โดยการดำเนินการแยกสองครั้ง ที่นี่การดำเนินการแยกจะใช้ต้นไม้ T สีแดงดำและคีย์ x และสร้างต้นไม้สองต้น L และ R โดยที่ L ประกอบด้วยองค์ประกอบทั้งหมดของ T น้อยกว่า x และ R องค์ประกอบของ T ที่มากกว่า x ดังนั้นเป้าหมายของเราในตอนนี้คือการดำเนินการแยกบนต้นไม้สีแดงดำในเวลาที่เลวร้ายที่สุดกรณี O (log n)
เราจะดำเนินการแยกบนต้นไม้สีแดงดำในเวลา O (log n) ได้อย่างไร มันกลับกลายเป็นว่ามีวิธีการที่รู้จักกันดี (ผมไม่ทราบ แต่ผมผู้เชี่ยวชาญของโครงสร้างข้อมูล no.) พิจารณาเข้าร่วมการดำเนินงานซึ่งจะมีต้นไม้สองต้น L และ R ดังกล่าวว่าค่าใน L ทุกคนเป็นน้อยกว่าค่าใน R ทุกคนและผลิตต้นไม้ประกอบด้วยทั้งหมด ค่าใน L และ R การดำเนินการเข้าร่วมสามารถดำเนินการได้ในเวลาที่เลวร้ายที่สุด O (| r L −r R | +1) โดยที่ r Lและ r Rคืออันดับของ L และ R ตามลำดับ (นั่นคือจำนวนโหนดสีดำบนเส้นทางจากรากถึงแต่ละใบไม้) การดำเนินการแยกสามารถนำมาใช้โดยใช้การดำเนินการเข้าร่วม O (log n) ครั้งและเวลาที่เลวร้ายที่สุดทั้งหมดยังคงเป็น O (log n) โดยพิจารณาผลรวมเหลื่อม
ส่วนที่ 4.1 และ 4.2 ของหนังสือ [Tar83] โดย Tarjan อธิบายวิธีการดำเนินการเข้าร่วมและการแยกบนต้นไม้สีแดงดำในช่วงเวลาที่เลวร้ายที่สุด O (log n) การใช้งานเหล่านี้ทำลายต้นไม้ดั้งเดิม แต่มันง่ายที่จะแปลงเป็นการใช้งานที่ไม่เปลี่ยนรูปแบบโดยการคัดลอกโหนดแทนการดัดแปลง
ในฐานะที่เป็นบันทึกด้านข้างชุดโมดูลและแผนที่ของObjective Camlให้การดำเนินการแยกเช่นเดียวกับการดำเนินงานมาตรฐานอื่น ๆ ในแผนภูมิการค้นหาแบบไบนารีที่ไม่เปลี่ยนแปลง แม้ว่าพวกเขาจะไม่ใช้ต้นไม้สีแดงดำ (พวกเขาใช้ต้นไม้ค้นหาแบบทวิภาคสมดุลโดยมีข้อ จำกัด ที่ความสูงด้านซ้ายและความสูงที่เหมาะสมแตกต่างกันอย่างมาก 2) การดูการใช้งานของพวกเขาอาจมีประโยชน์เช่นกัน นี่คือการดำเนินงานของโมดูลชุด
อ้างอิง
[Tar83] Robert Endre Tarjan โครงสร้างข้อมูลและเครือข่ายอัลกอริทึม เล่มที่ 44 ของCBMS-NSF Regional Conference Series ในสาขาคณิตศาสตร์ประยุกต์ SIAM, 1983