TreeSet
पुनरावृत्ति निश्चित रूप से ओ (एन) है, जैसा किसी भी समझदार पेड़-चलने वाले एल्गोरिदम से अपेक्षा की जा सकती है।
मैं सोच रहा हूँ कि लिंक नोड माता-पिता के लिए बच्चे नोड से पिछड़े प्रदान करके मैं प्रदर्शन में सुधार कर सकते हैं।
TreeMap
(जो TreeSet
पर आधारित है) पहले से ही ऐसे मूल संदर्भ हैं।
private Entry<K,V> successor(Entry<K,V> t) {
if (t == null)
return null;
else if (t.right != null) {
Entry<K,V> p = t.right;
while (p.left != null)
p = p.left;
return p;
} else {
Entry<K,V> p = t.parent;
Entry<K,V> ch = t;
while (p != null && ch == p.right) {
ch = p;
p = p.parent;
}
return p;
}
}
स्रोत
2010-05-03 16:07:16
यह प्रश्न समझ में नहीं आता है। ऐसा लगता है जैसे आप अपने पेड़ पर फिर से चल रहे हैं ओ (एन) है। यह पुनरावृत्ति के लिए आप सबसे अच्छा कर सकते हैं - एन वस्तुओं को देखने के लिए ओ (एन) समय की आवश्यकता होती है। यदि आप कोड को तेज़ी से नियंत्रित करना चाहते हैं, तो आपको एल्गोरिदम को बदलना होगा, इसलिए यह पुनरावृत्ति नहीं करता है - उदाहरण के लिए, पेड़ में कुंजी द्वारा लुकअप करके (जो ओ (लॉग एन) होगा) बजाय। – babbageclunk