से सभी बाइनरी पेड़ प्रिंट करना एक साक्षात्कार में इस प्रश्न में आया। बाइनरी पेड़ के विकृत ट्रैवर्सल को देखते हुए। इससे सभी संभावित बाइनरी पेड़ प्रिंट करें।इनऑर्डर ट्रैवर्सल
प्रारंभिक सोचा:
तो कहते हैं कि हम सरणी में केवल 2 तत्वों की है। 2,1 कहो फिर दो संभव पेड़
2
\
1
1
/
2
तो 3 तत्वों कहो, 2,1,4 हैं। तब हमारे पास 5 संभव पेड़ हैं।
2 1 4 2 4
\ /\ / \ /
1 2 4 1 4 2
\ / / \
4 2 1 1
तो, मूल रूप से यदि हमारे पास एन तत्व हैं, तो हमारे पास एन -1 शाखाएं (बच्चे,/या) हैं। हम इन एन -1 शाखाओं को किसी भी क्रम में व्यवस्थित कर सकते हैं। एन = 3, एन -1 = 2. के लिए, तो, हमारे पास 2 शाखाएं हैं। हम इन तरीकों से 2 शाखाओं की व्यवस्था कर सकते हैं:
/ \ \ / /\
/ \ / \
प्रारंभिक प्रयास:
struct node *findTree(int *A,int l,int h)
{
node *root = NULL;
if(h < l)
return NULL;
for(int i=l;i<h;i++)
{
root = newNode(A[i]);
root->left = findTree(A,l,i-1);
root->right = findTree(A,i+1,h);
printTree(root);
cout<<endl;
}
}
अपने उदाहरणों में (1, 2, 4) के साथ, अंतिम उदाहरण 4-1-2 से ऊपर से नीचे होना चाहिए? –
@ChuckBlumreich सरणी 2,1,4 है। मुझे लगता है कि आंकड़े सही हैं .. –
दिलचस्प सवाल है, लेकिन मुझे आपके आरेखों के बारे में निश्चित नहीं है। मैं 'क्रम में' यात्रा के रूप में व्याख्या कर रहा हूं, 'बाएं बच्चों की यात्रा करें, नोड पर जाएं, सही बच्चों की यात्रा करें' (पूर्व-आदेश 'के विपरीत एन, यात्रा एल, आर' और पोस्ट ऑर्डर 'पर जाएं, यात्रा करें, यात्रा करें, यात्रा करें एन ')। यदि यह सही है, तो जोड़ी के लिए दो पेड़ '(2, 1)' '(root = 2, r child = 1)' चित्रित और '(बाएं बच्चे = 2, रूट = 1) 'के रूप में हैं, जो नहीं है आपने क्या चित्रित किया है। मुझे अधिक जटिल आरेखों के बारे में समान चिंताएं हैं, लेकिन मैं पूरी तरह से कुछ गलत समझ सकता हूं। –