حذف در درخت

lighting

Member
سلام
یه سوال درباره درخت ها اگه بخواهیم یه الگوریتمی بنویسیم که توی درخت دودویی تمام برگ هایی رو که فرزند چپ هستند حذف کنه چه کار باید انجام بدیم؟
ممنون
 

the_king

مدیرکل انجمن
سلام
یه سوال درباره درخت ها اگه بخواهیم یه الگوریتمی بنویسیم که توی درخت دودویی تمام برگ هایی رو که فرزند چپ هستند حذف کنه چه کار باید انجام بدیم؟
ممنون

همه گره های درخت رو از آغاز تا پایان پیمایش می کنیم.
در حین پیمایش اگر به برگی رسیدیم که فرزند چپ هست حذف اش می کنیم.
الگوریتم زیر غیر بازگشتی است :

1) یک پشته خالی ایجاد می کنیم.
2) گره ریشه درخت را در پشته قرار می دهیم.
3) اگر پشته خالی بود به مرحله 15 می رویم.
4) مقدار بالای پشته را در متغیر p قرار می دهیم.
6) مقدار فرزند چپ p را در متغیر w قرار می دهیم.
5) اگر w تهی بود به مرحله 11 می رویم.
6) اگر گره w فرزند چپ یا فرزند راست داشت به مرحله 10 می رویم.
7) مقدار فرزند چپ p را تهی می نماییم.
8) گره w را حذف می کنیم.
9) به مرحله 11 می رویم.
10) مقدار w را در پشته اضافه می کنیم.
11) مقدار فرزند راست p را در متغیر w قرار می دهیم.
12) اگر w تهی بود به مرحله 3 می رویم.
13) مقدار w را در پشته اضافه می کنیم.
14) به مرحله 3 می رویم.
15) پایان
 

جدیدترین ارسال ها

بالا