हाल ही में मैं बाइनरी में हेरफेर करने की कोशिश कर रहा थाखोज पेड़ और यहाँ अटक गया। मैं एक सरणी (पॉइंटर्स का एक सरणी) रखना चाहता हूं, जिसके अंदर मैं बाइनरी सर्च ट्री के प्रत्येक नोड के पॉइंटर्स को इन-ऑर्डर फैशन में स्टोर करना चाहता हूं। मुझे कुछ भी पता नहीं है, मुझे संकेत की जरूरत है ताकि मैं उनके मूल्य, बाएं सबट्री और राइट सबट्री तक पहुंच सकूं। मैंने क्या किया है।
struct node{
int key;
struct node *left, *right;
};
node **arr;
int x=0;
void inorder(struct node *root){
if (root != NULL){
inorder(root->left);
//cout<<"X : "<<x<<endl;
arr[x] = root;
x++;
printf("%d n", root->key);
inorder(root->right);
}
}
कृपया मदद कीजिए। धन्यवाद।
उत्तर:
जवाब के लिए 0 № 1आप ऐसा कर सकते हैं, लेकिन यदि नोड के क्रमबद्ध सरणीसंकेत आपकी आवश्यकताओं को पूरा करते हैं, तो आपको "बाइनरी सर्च ट्री की आवश्यकता नहीं है: आप सरणी पर बाइनरी खोज कर सकते हैं। इस डेटा संरचना में एक ट्री के समान एक्सेस स्पीड है (यह थोड़ा और भी तेज हो सकता है क्योंकि डेटा को मेमोरी में कसकर पैक किया गया है) और बहुत स्मृति कुशल है। लेकिन नए डेटा का सम्मिलन महंगा है: ओ (एन)। इसलिए यह समाधान उचित नहीं है यदि कई सम्मिलन अपेक्षित हैं। लेकिन इस मामले में उस सॉर्ट किए गए सरणी को बनाए रखने से आप पेड़ की संरचना के सभी लाभों को ढीला कर देते हैं।