PDA

View Full Version : سئوال در مورد درخت دودوئی



mehdi5106
یک شنبه 16 دی 1386, 09:27 صبح
با سلام خدمت دوستان
من برنامه ای رو با زبان سی در مد گرافیک و موضوع درخت جستجوی دودوئی نوشته ام.تقریبا بیشتر پروژه تکمیل شده فقط مشکلی که هست اینه که درخت رو هم باید رسم کنه.دو تابعی که جهت رسم درخت ازشون استفاده کردم در پائین هستند.اما مشکلی که هست فقط گره های خارجی درخت رو درست رسم می کنه.اگه میشه یه راه حلی ارائه بدین تا درخت رو به طور کامل رسم کنه.قول میدم اگر پروژه تکمیل شد اونو همینجا برای استفاده بقیه قرار بدم.
مختصات نقطه شروع یا ریشه هم از x=310 و y=5 شروع میشود.


void dtree(tree *root1)
{
if(root1==0)
return;
if(root1->left)
{
x-=70;
y+=30;
val=0;
dtree(root1->left);
}
if(root1->right)
{
x+=70;
y+=30;
val=1;
dtree(root1->right);
}
nd=root1->info;
ptree();
}


void ptree()
{
setcolor(14);
itoa(nd,sd,10);
outtextxy(x,y,sd);
setcolor(12);
circle(x+6,y+6,8);
if(val==0)
{
x+=70;
y-=30;
val=0;
}
else
{
x-=70;
y-=30;
val=1;
}
}

empoly
یک شنبه 16 دی 1386, 10:37 صبح
دوست عزیز
اگر ممکنه فایل کد را بذار تا بتونیم با اجرای اون نتیجه را ببینیم. و نیازی به تایپ هدر و .. نداشته باشیم. هر چند که دو قسمت اصلی برنامه را قرار داده ای ( ولی اون طوری بهتره)

فکر کنم اگر متغیر ها را سراسری قرار ندی و اون ها را برای توابع پاس کنی بهتر باشه.

تمامی نودهای شما رسم می شه ولی تعدادی از اون ها روی هم می افته

daneshjo IT
یک شنبه 16 دی 1386, 16:42 عصر
سلام.
اگر امکان داره در مورد بعضی از توابعی که نوشتین می شه یک توضیحی بدین؟
اینکه چه کاری میکنند؟مثلا: ()sremove,...

mehdi5106
یک شنبه 16 دی 1386, 18:42 عصر
مثل اینکه من از شماها سئوال کردم
سئوال من اینه که چطور می تونم درخت دودوئی رو طراحی کنم.
دو تا از توابعی هم که این کار رو انجام میدن در اولین پست بهشون اشاره کردم.
اگر کسی می تونه ای دو تابع رو اصلاح کنه
فقط اینو بگم که این دو تابع در طراحی درخت نقش دارند و بقیه توابع برای دریافت ، حذف و ... هستند.