تالار گفتمان مانشت
سوال از مبحث درخت ها کنکور مهندسی کامپیوتر ۸۵ - نسخه‌ی قابل چاپ

سوال از مبحث درخت ها کنکور مهندسی کامپیوتر ۸۵ - hoomanab - 11 دى ۱۳۹۲ ۱۲:۴۴ ب.ظ

سلام
دوستان کسی میدونه جواب این سوال چی میشه؟!
من خودم ۱۰ به دست آوردم
[تصویر:  233914_a8y7yryz.jpg]
این هم جواب کتاب مدرسانه
[تصویر:  233914_e2eru7ut.jpg]

Sent from my SM-T210R using Tapatalk

Re: سوال از مبحث درخت ها کنکور مهندسی کامپیوتر ۸۵ - Donna - 11 دى ۱۳۹۲ ۰۲:۴۳ ب.ظ

از پشته استفاده کنید.هربار که به یه دستور بازگشتی میرسید دستورات بعد از خودشو تو پشته ذخیره کنید این کارو ادامه بدید تا برسید به برگها .بعدا از بالای پشته شروع کنید گره هارو بررسی کنید اگه کلید چپش بزرگتر از کلید راست بود کلید رو به اضافه inc کنید.من این طوری حل کردم و موقع بررسی گره با کلید ۴ اینکش برابر ۲ بود که وقتی جمع شن میشن ۶ و اینک گره با کلید ۷ هم ۱ میشه که اگه جمع بشن میشن ۸ و بزرگترین کلید در انتها میشه.

Re: سوال از مبحث درخت ها کنکور مهندسی کامپیوتر ۸۵ - hoomanab - 11 دى ۱۳۹۲ ۰۴:۳۳ ب.ظ

مگه inc توی هر مرحله یک واحد بالا نمیره؟!
ببینید اشکال کار من کجاست؟!
[تصویر:  233971_vuva9yva.jpg]

Sent from my SM-T210R using Tapatalk

Re: سوال از مبحث درخت ها کنکور مهندسی کامپیوتر ۸۵ - Donna - 11 دى ۱۳۹۲ ۰۵:۲۱ ب.ظ

وقتی بار اول (۰ ,۵)T فراخوانی بشه هر دستور بازگشتی که تو برنامه باشه پارامتر inc مقدار صفر رو میگیره. وقتی (۱ ،۷)T فراخوانی شد (۱ ,۶)T و دستورات بعدش در پشته ذخیره میشه و اینبار هر دستوربازگشتی که تو برنامه باشه پارامتر inc مقدار یک میگیره و یدونه اضافه میشه و ۲ میشن. و به همین ترتیب

RE: سوال از مبحث درخت ها کنکور مهندسی کامپیوتر ۸۵ - hoomanab - 11 دى ۱۳۹۲ ۰۶:۵۴ ب.ظ

اینطور که شما میگید یعنی باید دو تا گره فرزند رو با هم مقدار بده؟
من اینطور استدلال میکنم: بار اول ۵ میاد مقدار ۰ میده به inc بعد فرزن چپش فراخوانی میشه.حالا فرزند چپش(یعنی ۷) مقدار یکی به این اضافه میکنه که میشه ۱/
فرزند چپ ۷ فراخوانی میشه و باز یکی به inc اضافه میکنه که میشه ۲/
فرزند چپ ۴ فراخوانی میشه ویکی به inc اضافه میشه که برابر با ۳ میشه.
حالا چون ۳ برگه، عقبگرد میکنیم به ۴/
فرزند راست ۴ فراخوانی میشه و یکی به inc اضافه میشه که میشه ۴/
حالا این شرط بررسی میشه که اگر کلید چپ ۴ بزرگتر از کلید راستشه(۳ > 2) ،
Key®
رو قرار بده ۴ + inc. که میشه ۸
برای بقیه هم همینطور بازگشتی بر میگردیم و فرزند راستو بررسی میکنیم و به inc اضافه میشه.
ایراد کار من کجاست؟!

Sent from my SM-T210R using Tapatalk

Re: سوال از مبحث درخت ها کنکور مهندسی کامپیوتر ۸۵ - Donna - 11 دى ۱۳۹۲ ۰۷:۴۴ ب.ظ

باید اینطوری باشه که وقتی ۵ فراخوانی میشه مقدار صفر میاد به اینک در اینصورت دوتا دستوربازگشتی فراخوانی فرزند چپ و راست هردو مقدار ۱ رو برای آرگومان اینک میگیرن.
باید به این توجه کنید که در روش فراخوانی با مقدار کپی آرگومان ها یعنی اینجا inc به تمامی پارامترهای inc توابع فرستاده میشه. پس همزمان که اینک فرزند چپ رو مقدار ۱ قرار میدید باید پارامتر اینک فرزند راست رو هم ۱ قرار بدید.
حالا باز وقتی گره ۷ با مقدار اینک ۱ فراخوانی میشه این تابع فراخوانی مقدار آرگومان ۱ رو به هر دو تابع فرزند چپ و راستش میفرسته و اونا پارمتر اینکشون میشه ۲ و در نهایت که به برگها رسیدیم کلیدها رو مقایسه می کنیم و ادامه کار...
امیدوارم منظورمو خوب رسونده باشم

RE: سوال از مبحث درخت ها کنکور مهندسی کامپیوتر ۸۵ - hoomanab - 11 دى ۱۳۹۲ ۰۸:۱۸ ب.ظ

آقا من یه چیزی فهمیدم که خیلی خیط کردم Big Grin
تابع traverse همون حرکت کردنه. اصلا بازگشتی نیست !

Sent from my SM-T210R using Tapatalk