एक BST में डुप्लिकेट के साथ काम

वोट
2

मेरे BST डुप्लिकेट प्रविष्टियों के साथ सामना करने में सक्षम हो गया है। किसी को भी यह कैसे है कि कोड की अत्यधिक मात्रा की आवश्यकता नहीं है के बारे में जाने के लिए किसी भी रणनीति है? मैं लगातार सही करने के लिए डुप्लिकेट जोड़ने के बारे में सोचा है, लेकिन फिर कि गंदगी इच्छा BST आदेश। उदाहरण के लिए क्या होता है जब नकली दो बच्चों को जो बारी में दो बच्चे हैं है ?. डुप्लिकेट डालने के लिए पर्याप्त आसान है, लेकिन क्या नोड बदल के साथ किया जा रहा है?

10/10/2009 को 08:51
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
2

आप लिंक किए गए सूचियों में द्विआधारी खोज वृक्ष के नोड्स बना सकता है।

class Data implements Comparable<Data>
{
   // These are the data elements in your binary search tree
}

class TreeNode
{
  TreeNode left; // elements less than current node, or null
  TreeNode right; // elements greater than current node, or null
  List<Data> items = new LinkedList<Data>();    
}

इधर, treeNode.itemsहमेशा एक गैर खाली सूची, ऐसी है कि है item1.compareTo(item2) == 0हर के लिए item1और item2में treeNode.items

एक नकली तत्व सम्मिलित करने के लिए, आप प्रासंगिक मिलेगा TreeNodeवस्तु और करने के लिए एक नया आइटम जोड़ने items

एक बार आप प्रासंगिक लगता है के रूप में आप से पहले था, सिवाय इसके कि तत्वों को खोजने का तर्क लगभग एक ही है TreeNodeवस्तु आप लिंक्ड सूची चलना पड़ता है।

10/10/2009 को 13:17
का स्रोत उपयोगकर्ता

वोट
3

जब तक यह एक आत्म BST संतुलन नहीं है के रूप में, मैं बाएं या नोड है कि उन्हें करने के बराबर है के दाईं ओर बराबर नोड्स डाल के साथ एक समस्या नहीं दिख रहा।

संपादित करें (simonn की टिप्पणी के बाद):

"डुप्लिकेट नोड" सवाल में पहले से ही 2 बच्चे हैं, तो बस "नया डुप्लिकेट नोड" बाईं ओर डालें और "पुराने डुप्लिकेट नोड" के बाईं बच्चे "नई डुप्लिकेट नोड" के बाईं बच्चे बन करते हैं।

मुझे एक उदाहरण के साथ स्पष्ट करते हैं। डुप्लिकेट डालने से पहले पेड़:

    4'
   / \
  2   5
 / \
1   3

और अब तत्व 4''सम्मिलित किया जाता है:

      4'
     / \
    4'' 5
   /
  2   
 / \
1   3

जब तक पेड़ आत्म संतुलन नहीं है, आप ठीक होना चाहिए।

10/10/2009 को 13:37
का स्रोत उपयोगकर्ता

वोट
0

मुझे आश्चर्य है अगर आप वास्तव में अलग-अलग नोड के रूप में डुप्लिकेट प्रविष्टियों को स्टोर करने की जरूरत है? अपने नोड के लिए एक काउंटर चर जोड़ने चाहेंगे पर्याप्त हो सकता है? इस तरह यदि आप पेड़ पार आप डुप्लिकेट प्रविष्टियों की संख्या पता होगा और अभी भी क्रम बनाए रखने के।

21/06/2012 को 19:26
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more