اگر امکان دارد الگوریتم شمارش تعداد برگ و سطح و گره های داخلی یک درخت دودویی را که به زبان C باشد را برایم بگذارید ممنون می شوم
اگر امکان دارد الگوریتم شمارش تعداد برگ و سطح و گره های داخلی یک درخت دودویی را که به زبان C باشد را برایم بگذارید ممنون می شوم
دوست عزیز این سوالی که پرسیدین سوال درستی نیست .
جواب این سوال به نحوه ذخیره و پیاده سازی درختتون بستگی داره.
وقتی درخت دودویی باشه ، نحوه قرار گیری فکر نکنم تاثیر خاصی داشته باشهنقل قول:
دوست عزیز این سوالی که پرسیدین سوال درستی نیست .
جواب این سوال به نحوه ذخیره و پیاده سازی درختتون بستگی داره.
دوست عزیز الگوریتم را با زبان خاصی نمی نویسند!نقل قول:
اگر امکان دارد الگوریتم شمارش تعداد برگ و سطح و گره های داخلی یک درخت دودویی را که به زبان C باشد را برایم بگذارید ممنون می شوم
برای شمارش برگها از یک تابع بازگشتی می توان استفاده کرد که مثلا پیمایش inorder درخت را انجام دهد و در حین پیمایش برگها را شمارش کرد(نودی که فرزندی ندارد)
برای شمارش سطحها هم ،همین روش جوابگو است ، باید متغیری برای سطح ماکزیمم بگیرید، البته روش های دیگری هم وجود دارد، با کمی جستجو در همین بخش روش محاسبه سطح را می توانید پیدا کنید
منظورم پیاده سازی درخت دودویی با اشاره گر است
دوست عزیز الگوریتم ها مستقل از ساختمان داده و پیاده سازی طراحی می شوند.نقل قول:
منظورم پیاده سازی درخت دودویی با اشاره گر است
شما ابتدا باید الگوریتم را طراحی کنید سپس آنرا به دلخواه خود پیاده سازی کنید. برای مسئله ای که عنوان کردید شما باید یکی از پیمایش های درخت را بکار ببرید، حال اینکه چه ساختمان داده ای بکار می برید با شما است. اگر درباره خود الگوریتم سوال دارید بپرسید ولی اگر در مورد پیاده سازی با زبان C مشکل دارید باید سوال خود را در بخش برنامه نویسی C بپرسید
موفق باشید
من مشکل ام پیاده سازی الگوریتم مورد نظر به زبان C است
این توابعش ببین به دردت میخوره...
تعداد گره ها:
int noden(tree *node)
{
tree *tnode=node;
if(tnode!=0)
{
if((tnode->left==0)&&(tnode->right==0))
return 1;
else
return(noden(tnode->left)+noden(tnode->right)+1);
}
return 0;
}
تعداد برگها:
int leaf(tree *node)
{
tree *tnode=node;
if(tnode!=0)
{
if((tnode->left==0)&&(tnode->right==0))
return 1;
else
return(leaf(tnode->left)+leaf(tnode->right));
}
return 0;
}
ارتفاع درخت:
int depth(tree *node)
{
int l,r;
tree *tnode=node;
if(tnode!=0)
{
l=depth(tnode->left);
r=depth(tnode->right);
if(l>r)
return l+1;
else
return r+1;
}
return 0;
}