पर गहराई को असाइन करना मैंने यहां कुछ अन्य लेख पढ़े जो समान दिखते थे, लेकिन मेरी समस्या का काफी जवाब नहीं दिया। मुझे प्रत्येक नोड को बाइनरी पेड़ में अपनी संबंधित गहराई को आवंटित करने के लिए एक असाइनमेंट के लिए एक प्रश्न दिया गया है। मैं बस इसे काफी नहीं मिल सकता है।प्रत्येक नोड
struct treeNode {
int item;
int depth;
treeNode *left;
treeNode *right;
};
typedef treeNode *Tree;
int assignDepth(Tree &T, int depth)
{
if(T!=NULL)
{
depth = assignDepth(T->left, depth++);
T->depth = depth;
depth = assignDepth(T->right, depth++);
}
else //leaf
return depth--;
}
मैं कागज और कलम के साथ यह माध्यम से चल रहे की कोशिश की और यह ठीक देखा, लेकिन मेरी मेज कौशल की जाँच के स्पष्ट रूप से कमी है:
संदर्भ के लिए यह मेरा कोड है।
क्या कोई मुझे सही दिशा में इंगित कर सकता है, कृपया? यह पेड़ का उपयोग करने वाला मेरा पहला समय है, और रिकर्सन मेरा मजबूत बिंदु नहीं है।
उत्तर:
void treecoords(Tree &T, int depth)
{
static int count = -1; //set to -1 so the precrement before assignment doesn't give the wrong values
if(T!=NULL)
{
treecoords(T->left, depth+1); //depth decrements automatically once this function call is removed from the stack
count++;
T->x = count;
T->y = depth;
treecoords(T->right, depth+1);
}
}
मेरी पोस्ट का उत्तर देने वाले सभी लोगों के लिए धन्यवाद। मैं समझता हूं कि मैं इसके बारे में अब सब गलत सोच रहा था। मैं दूर जाऊंगा और जो कुछ आपने मुझे बताया है उसे दिए गए कोड को ठीक करने का प्रयास करें और मेरे अंतिम परिणाम पोस्ट करें। मैं पूरी तरह समझने के बिना किसी भी कोड का उपयोग नहीं करना चाहता (हालांकि मैं सराहना करता हूं कि आपने इसे मेरे लिए पोस्ट किया है, धन्यवाद)। – xyzjace
यह काम करता है! मैंने एक रिकर्सिव एल्गोरिदम बनाया जो श्री कूपर से मेल खाता है। यह वास्तव में एक बड़े एल्गोरिदम का हिस्सा है जो पेड़ नोड्स को एक्स और वाई निर्देशांक निर्दिष्ट करता है। एल्गोरिदम अब मूल प्रश्न में है। – xyzjace