एक AVL पेड़ के साथ दोहराया मूल्यों और दोहरी तुलना

0

सवाल

मैं बनाने के लिए की जरूरत एक डेटा संरचना का उपयोग (मुख्य रूप से AVL पेड़) की वस्तुओं के साथ दो मूल्यों: स्तर (अद्वितीय नहीं है) और आईडी (अद्वितीय).

मैं की जरूरत का समर्थन करने के लिए खोज के द्वारा आईडी, द्वारा मुद्रण आदेश के स्तर, के रूप में अच्छी तरह के रूप में विलय ऐसे दो पेड़ और बनाए रखने के लिए इन functionalities के साथ नए पेड़ ।

मैं पहले से ही कई समाधान है मन में लेकिन मैं पूछना चाहता था के बारे में एक विशिष्ट एक:

यह काम करेगा को लागू करने के लिए इस संरचना के साथ एक विलक्षण AVL पेड़, जहां दो नोड्स पहली बार कर रहे हैं की तुलना में अपने स्तर के अनुसार, और फिर उनके ids? ज्यादातर मैं संघर्ष का एहसास करने के लिए कैसे के विलय के दो ऐसे पेड़ों काम कर सकता है, विशेष रूप से मामले में हम एक पेड़ है, जहां सभी वस्तुओं के स्तर एक्स और बी पेड़, जहां सभी वस्तुओं के स्तर वाई.

संपादित करें: यह भी खोज के लिए आईडी के अलावा वहाँ हो जाएगा, एक पेड़ केवल द्वारा हल आईडी.

सकता है इस विधि काम करता है?

algorithm avl-tree data-structures
2021-11-23 19:10:15
1

सबसे अच्छा जवाब

2

विलक्षण AVL पेड़, जहां दो नोड्स पहली बार कर रहे हैं की तुलना में अपने स्तर के अनुसार, और फिर उनके ids?

दुर्भाग्य से नहीं । यदि आप करते हैं कि आप नहीं होगा करने में सक्षम कुशलता का पता लगाने के लिए एक नोड से अपनी आईडी-आप की आवश्यकता होगी के माध्यम से देखने के लिए सभी संभव 'स्तर' है, जो आप निर्दिष्ट नहीं किया है तो मुझे लगता है वे हो सकता है असीम.

मुझे लगता है कि तुम चाहते हो सकता है सम्मिलित करने के लिए, प्रत्येक नोड में दो अलग-अलग AVL पेड़ के बजाय. एक AVL पेड़ के आदेश द्वारा नोड्स के स्तर पर, अन्य के द्वारा अपने आईडी है. सभी प्रश्नों, सम्मिलन, विलोपन और विलीन हो जाती है पर किया जा सकता है, प्रत्येक वृक्ष से अलग है ।

दूसरे शब्दों में आप चाहते हैं बनाने के लिए दो इंडेक्स पर अपने डेटा.

कोड में:

struct Node {
    int id;
    int level;

    // by id
    int id_bf;
    Node *id_left, *id_right;

    // by level
    int level_bf;
    Node *level_left, *level_right;
};

संपादित करें: यह भी खोज के लिए आईडी के अलावा वहाँ हो जाएगा, एक पेड़ केवल द्वारा हल आईडी.

तो आप अनिवार्य रूप से एक ही बात का वर्णन के रूप में । हालांकि अपने पेड़ है कि द्वारा हल समग्र (level, id) कुंजी व्यर्थ है; आप सभी की जरूरत है एक पेड़ के द्वारा हल (level) और एक पेड़ के द्वारा हल (id) (अदिश कुंजी). वहाँ की कोई जरूरत नहीं है, के बीच संचालन आप प्रदान की, द्वारा सॉर्ट करने के लिए (level, id) और (id).

2021-11-23 19:29:44

उत्तर के लिए धन्यवाद दुर्भाग्य से मैं सिर्फ उल्लेख करना भूल गया कि इसके साथ ही मैं एक पेड़ के द्वारा हल आईडी के लिए इस कार्यक्षमता । मैं आप के बारे में सोचा समाधान मैं सिर्फ सोच के बारे में यह विशेष रूप से समाधान के एक सहपाठी ने मुझे बताया कि जो मुझे लगता है कि नहीं होगा, क्योंकि काम के विलय,
user3917631

@user3917631: एक पेड़ के द्वारा हल (स्तर, आईडी) भी द्वारा हल (स्तर). इस प्रकार यदि आप एक पेड़ के द्वारा हल (आईडी) के लिए इसके अलावा में या तो उन में से, आप करने में सक्षम हो जाएगा के संचालन कुशलता से मैं बस की तरह वर्णित है. यह एक बिट फालतू द्वारा सॉर्ट करने के लिए (स्तर, आईडी), तो आप सभी की जरूरत है (स्तर).
Yakov Galka

मुझे पता है, मैं केवल पूछ ब्याज से बाहर, कर सकते हैं यह काम? यह संभव है करने के लिए दो पेड़ों के द्वारा हल (स्तर, आईडी) दोनों integers और उन्हें मर्ज में हे(एन) (एन की संख्या संयुक्त नोड्स).
user3917631

@user3917631: हाँ, यह संभव है, नहीं है और अलग से विलय दो पेड़ों के द्वारा हल कुछ और. द्विआधारी खोज पेड़ तुलना आधारित है, इसलिए वे नहीं 'ध्यान' क्या आप का उपयोग कर रहे हैं के लिए अपने प्रमुख के रूप में लंबे समय के रूप में यह एक पूरी तरह से सेट का आदेश दिया. एक टपल के integers का एक सेट करने के लिए. विकिपीडिया पर लेख AVL पेड़ वर्णन करता है कि कैसे करने के लिए कुशल मर्ज; वहाँ यह कहा जाता है एक संघ. हालांकि आप चाहते हो सकता है स्टोर करने के लिए नोड ऊंचाई के बजाय एक संतुलन कारक है कि करने के लिए.
Yakov Galka

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में