Macneils अंक के अलावा ...
लाल-काले पेड़ शायद अधिक सीधे उपयोगी होते हैं क्योंकि उपयोगी कुशल संचालन होते हैं जो मानक पुस्तकालय कार्यान्वयन में व्यापक रूप से समर्थित नहीं होते हैं जैसे कि C ++ std::map
(कम से कम AFAIK)। लाल-काले पेड़ "विभाजित" का समर्थन कर सकते हैं (एक पेड़ को दो में काटकर, एक जिसमें चाबी की तुलना में कम कुंजियाँ होती हैं, और एक जिसमें चाबी अधिक होती है) और "जुड़ते हैं" (उल्टे, छोटे पेड़ के साथ बड़ी चाबियों के पेड़ को मिलाकर चाबियाँ) दोनों हे (लॉग एन) समय में की जा सकती हैं, लेकिन अगर ये मानक कंटेनर पुस्तकालयों में समर्थित हैं, तो यह एक अच्छी तरह से छिपी हुई बात लगती है।
हालांकि, "वृद्धि" डेटा संरचनाएं आम हैं। एक सरल उदाहरण ओ (लॉग एन) सबस्क्रिप्टिंग का समर्थन करने के लिए लगभग किसी भी पेड़ डेटा संरचना में नोड्स में आकार-से-सबट्री जानकारी जोड़ रहा है। अधिक परिष्कृत उदाहरणों में अंतराल के पेड़ शामिल हैं।
एक बार जब आप डेटा संरचनाओं को बढ़ाने का विचार प्राप्त करते हैं, तो कई विविधताएं होती हैं जो विशेष अनुप्रयोगों के लिए उपयोगी हो सकती हैं - और बहुत कम उपलब्ध हैं जो पुस्तकालय के रूप में पूर्व-पैक हैं। मौजूदा मानक-पुस्तकालय डेटा संरचनाएं (जैसे कि जैसे std::map
) स्रोत कोड की प्रतिलिपि बनाने और इसे सीधे संशोधित करने की कमी को बढ़ाया नहीं जा सकता है - आप उन्हें टेम्पलेट मापदंडों का उपयोग करके संवर्धित नहीं कर सकते।
बेशक एक संवर्धित डेटा संरचना विकसित करने के लिए, आपको अंतर्निहित गैर-संवर्धित डेटा संरचना को समझने की आवश्यकता है।
AVL के पेड़ लाल-काले पेड़ों की तुलना में तेज़ हो सकते हैं यदि आप आवेषण / विलोपों की तुलना में बहुत अधिक खोज करते हैं (और बशर्ते आपको उन विभाजन / संचालन में शामिल होने की आवश्यकता नहीं है), इसलिए अनुप्रयोग के आधार पर, वे इसके लिए एक बहुत अच्छा आधार हो सकते हैं बढ़ाने।