मैं जूलिया में बीएसटी को लागू करने की कोशिश कर रहा हूं, लेकिन जब मैं सम्मिलित समारोह को कॉल करता हूं तो मुझे समस्या का सामना करना पड़ा। जब मैं नया नोड बनाने की कोशिश करता हूं, तो संरचना अपरिवर्तित रहता है।जूलिया में बीएसटी को कैसे कार्यान्वित करें?
मेरे कोड:
type Node
key::Int64
left
right
end
function insert(key::Int64, node)
if node == 0
node = Node(key, 0, 0)
elseif key < node.key
insert(key, node.left)
elseif key > node.key
insert(key, node.right)
end
end
root = Node(0,0,0)
insert(1,root)
insert(2,root)
मैं भी कुछ भी नहीं करने के लिए शून्य बदलने की कोशिश की। अगला संस्करण जो मैंने कोशिश की वह नोड में परिभाषित डेटाटाइप के साथ है, लेकिन जब मैं कुछ भी मूल्य (सी नल के समान) के साथ सम्मिलित करने का प्रयास करता हूं तो उसने मुझे त्रुटि दी।
उत्तर के लिए धन्यवाद।
सुनिश्चित नहीं है कि मैं प्रश्न समझता हूं - आप 'डालने' समारोह को वास्तव में क्या करने की अपेक्षा करते हैं? अंतिम कोड के लिए दूसरे कोड के लिए 'नोड (1,0,0) 'और पिछले पंक्ति के लिए' नोड (2,0,0)', जो सही लगता है, चल रहा है? –
मुझे यकीन नहीं है कि बीएसटी क्या है, लेकिन अपना कोड पढ़ना वह है जो आप एक ऐसा कार्य लिखने की कोशिश कर रहे हैं जो 'नोड' इनपुट (फ़ील्ड्स 'की',' बाएं 'और' दाएं 'के साथ) और एक 'कुंजी ', और फिर दो चीजों में से एक है: (i) यदि' नोड 'परिभाषित नहीं किया गया है, तो' कुंजी 'तर्क के साथ' कुंजी 'तर्क के साथ एक नया' नोड 'उदाहरण बनाएं और' बाएं 'के लिए शून्य और' दाएं 'या (ii) यदि 'नोड' मौजूद है, तो कार्य के' कुंजी' तर्क के साथ 'बाएं' या 'दाएं' फ़ील्ड को अपडेट करें? –
बीएसटी बाइनरी सर्च ट्री के लिए खड़ा है। फ़ंक्शन संरचना के लिए नए नोड्स डालता है। शून्य कुछ भी नहीं है। – pavelf