سلام اخواني ممكن تساعدوني في فهم الاستدعاء الذاتي للاله عند عرض الاشجار في هياكل البيانات بالسي
void show_pre(tree *t)
{if(t != NULL)
{cout<< t->data<<endl;
show_pre(t->left);
show_pre(t->right);
}
}
اريد ان اعرف متي يتوقف الاستدعاء الاول ومتي تدخل في الاستدعاء الثاني وما هي القيمه عند الاستدعاء الثاني
وهذا هو الكود كامل
#include<iostream>
using namespace std;
struct tree{
int data;
tree *left;
tree *right;
};
void add(tree *root,int x)
{ tree *node,*p,*t;
p = root;
node = new tree;
node->data = x;
node->left = NULL;
node->right = NULL;
while(p != NULL)
{
t = p;
if(x > p->data)
p = p->right;
else
p = p->left;
}
if(x > t->data)
t->right = node;
else
t->left = node;
}
void show_pre(tree *t)
{if(t != NULL)
{cout<< t->data<<endl;
show_pre(t->left);
show_pre(t->right);
}
}
int main(){
tree *node,*root,*temp;
int x;
root = NULL;
cout<<"enter any number or 0 to stop"<<endl;
do{
cin>>x;
if(root == NULL)
{
node = new tree;
node->data = x;
node->left = NULL;
node->right = NULL;
root = node;
temp = node;
}
else
{
temp = root;
add(temp,x);
}
}while(x != 0);
temp = root;
cout<<"elements :"<<endl;
show_pre(temp);
return 0;
}