का रिकर्सिव सम्मिलन मैंने लूप का उपयोग करके बीएसटी में सम्मिलन के लिए एक फ़ंक्शन बनाया है और यह पूरी तरह से ठीक काम कर रहा है। अब, जब मैं पुनरावृत्ति का उपयोग करके इसे करने के लिए लिख रहा हूं, मुझे नहीं पता कि यह ठीक से काम क्यों नहीं कर रहा है, हालांकि तर्क मेरे अनुसार सही है। ऐसा लगता है कि सम्मिलन समारोह से बाहर आने के बाद बीएसटी पेड़ में कोई नया नोड जोड़ा जा रहा है और पेड़ का सिर फिर से नल हो रहा है।बीएसटी
#include <iostream>
using namespace std;
class node{
public:
int data;
node *right;
node *left;
node(){
data=0;
right=NULL;
left=NULL;
}
};
class tree{
node *head;
int maxheight;
void delete_tree(node *root);
public:
tree(){head=0;maxheight=-1;}
void pre_display(node* root);
node* get_head(){return head;}
void insert(int key,node* current);
};
void tree::insert(int key,node *current){
if(current==NULL)
{
node *newnode=new node;
newnode->data=key;
current=newnode;
}
else{
if(key<current->data)
insert(key,current->left);
else
insert(key,current->right);
}
return;
}
void tree::pre_display(node *root){
if(root!=NULL)
{
cout<<root->data<<" ";
pre_display(root->left);
pre_display(root->right);
}
}
int main(){
tree BST;
int arr[9]={17,9,23,5,11,21,27,20,22},i=0;
for(i=0;i<9;i++)
BST.insert(arr[i],BST.get_head());
BST.pre_display(BST.get_head());
cout<<endl;
system("pause");
return 0;
}
कृपया मुझे बताएं कि इसे काम करने के लिए एल्गोरिदम में मुझे क्या बदलना चाहिए।
लेकिन iam भेजने सिर सूचक को हल करती है, और इसलिए वर्तमान प्रत्यावर्तन का पहला उदाहरण में प्रमुख के रूप में एक ही हो जाएगा। – Zohaib
आप मूल्य से नोड * पास कर रहे हैं। यदि आप संदर्भ बीएसटी :: हेड द्वारा इसे पास करते हैं तो सही ढंग से –
अपडेट किया जाएगा लेकिन मैं बीएसटी हेड को निजी रखना चाहता हूं। – Zohaib