जब बाइनरी पेड़ की बात आती है, तो कई अलग-अलग प्रकार के ट्रैवर्सल होते हैं जिन्हें दोबारा किया जा सकता है। वे उस क्रम में लिखे गए हैं जिनके संदर्भ में उनका संदर्भ लिया गया है (एल = बाएं बच्चे, वी = उस नोड पर जाएं, आर = दायां बच्चा)।
- में आदेश ट्रावर्सल (LVR)
- क्रम उलटा ट्रेवर्सल (RVL)
- Preorder ट्रेवर्सल (VLR)
- क्रंमोत्तर चंक्रमण (LRV)
आपका कोड दिखाई देता है प्रदर्शन किया जाना है पोस्टऑर्डर ट्रैवर्सल विधि, लेकिन आपको कुछ चीजें मिश्रित हो रही हैं। सबसे पहले, नोड वह है जिसे आप पार करना चाहते हैं; डेटा वह है जिसे आप देखना चाहते हैं। दूसरा, आपके पास नोड को वापस करने का कोई कारण नहीं है, जिस तरह से इसे लागू किया गया है। आपका कोड किसी शर्त के बारे में कहने की अनुमति नहीं देता है, 'मैं इस विशेष डेटा की तलाश में हूं, क्या आपके पास श्री नोड @ 0xdeadbeef है?', जो कुछ प्रकार के अतिरिक्त खोज पैरामीटर के साथ मिलेगा।
एक अकादमिक बीएसटी ट्रैवर्सल नोड्स को ही प्रिंट करता है। यदि आप एक खोज कार्यक्षमता जोड़ना चाहते हैं, तो यह केवल एक और पैरामीटर है, साथ ही सही नोड के लिए अतिरिक्त जांच भी है।
यहाँ एक टुकड़ा है:
// Academic
public void traverse (Node root){ // Each child of a tree is a root of its subtree.
if (root.left != null){
traverse (root.left);
}
System.out.println(root.data);
if (root.right != null){
traverse (root.right);
}
}
// Search with a valid node returned, assuming int
public Node traverse (Node root, int data){ // What data are you looking for again?
if(root.data == data) {
return root;
}
if (root.left != null){
return traverse (root.left, data);
}
if (root.right != null){
return traverse (root.right, data);
}
return null;
}
'traverse' विधि अपने द्विआधारी पेड़ में तत्वों का उपयोग के लिए है, लेकिन आप जड़ छोड़ दिया है, जड़ सही या रूट (भले ही जड़' null' है लौट रहे हैं!)। रिकर्सिव फ़ंक्शंस का विचार बेस केस को परिभाषित करना है और फिर उस बेस केस –
तक दोहराए जाने वाले कोड को परिभाषित करना है कि आप किस प्रकार का ट्रैवर्सल करने की कोशिश कर रहे हैं? क्या यह 'बीएसटी' है? क्या आपको 'BST' में सही स्थान पर नोड डालने की आवश्यकता है? – noMAD
यदि आप बाईं ओर जाते हैं, तो आप पंक्ति 4 में अंतिम चरण के रूप में वापस आते हैं, और कभी भी विपरीत नहीं होते हैं, और कभी भी वर्तमान नोड वापस नहीं करते हैं। वह ठीक नहीं दिखता है। –