मेरे BST डुप्लिकेट प्रविष्टियों के साथ सामना करने में सक्षम हो गया है। किसी को भी यह कैसे है कि कोड की अत्यधिक मात्रा की आवश्यकता नहीं है के बारे में जाने के लिए किसी भी रणनीति है? मैं लगातार सही करने के लिए डुप्लिकेट जोड़ने के बारे में सोचा है, लेकिन फिर कि गंदगी इच्छा BST आदेश। उदाहरण के लिए क्या होता है जब नकली दो बच्चों को जो बारी में दो बच्चे हैं है ?. डुप्लिकेट डालने के लिए पर्याप्त आसान है, लेकिन क्या नोड बदल के साथ किया जा रहा है?
एक BST में डुप्लिकेट के साथ काम
आप लिंक किए गए सूचियों में द्विआधारी खोज वृक्ष के नोड्स बना सकता है।
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वस्तु आप लिंक्ड सूची चलना पड़ता है।
जब तक यह एक आत्म BST संतुलन नहीं है के रूप में, मैं बाएं या नोड है कि उन्हें करने के बराबर है के दाईं ओर बराबर नोड्स डाल के साथ एक समस्या नहीं दिख रहा।
संपादित करें (simonn की टिप्पणी के बाद):
"डुप्लिकेट नोड" सवाल में पहले से ही 2 बच्चे हैं, तो बस "नया डुप्लिकेट नोड" बाईं ओर डालें और "पुराने डुप्लिकेट नोड" के बाईं बच्चे "नई डुप्लिकेट नोड" के बाईं बच्चे बन करते हैं।
मुझे एक उदाहरण के साथ स्पष्ट करते हैं। डुप्लिकेट डालने से पहले पेड़:
4'
/ \
2 5
/ \
1 3
और अब तत्व 4''सम्मिलित किया जाता है:
4'
/ \
4'' 5
/
2
/ \
1 3
जब तक पेड़ आत्म संतुलन नहीं है, आप ठीक होना चाहिए।
मुझे आश्चर्य है अगर आप वास्तव में अलग-अलग नोड के रूप में डुप्लिकेट प्रविष्टियों को स्टोर करने की जरूरत है? अपने नोड के लिए एक काउंटर चर जोड़ने चाहेंगे पर्याप्त हो सकता है? इस तरह यदि आप पेड़ पार आप डुप्लिकेट प्रविष्टियों की संख्या पता होगा और अभी भी क्रम बनाए रखने के।













