پیمایش درخت دودویی

پیاده‌سازی‌های بازگشتی و غیربازگشتی

✤    ۲۵ خرداد ۱۴۰۱
در علم کامپیوتر و ساختمان‌ داده‌های برنامه‌نویسی منظور از درخت دودویی درختی است که از یک گره به نام ریشه و حداکثر دو زیردرخت برای این گره تشکیل شده است که هر کدام از این دو زیردرخت خودشان یک درخت دودویی هستند. به دو گره ریشه این دو زیردرخت (در صورت موجود بودن) فرزندان چپ و راست گفته می‌شود. به همین ترتیب زیردرختی که فرزند راست در گره آن قرار دارد زیردرخت راست و زیردرختی که فرزند چپ در گره آن قرار دارد زیردرخت چپ گره نامیده می‌شوند.

  

درخت دودویی

  

درخت جستجوی دودویی، درخت هیپ و درخت AVL سه نوع درخت دودویی هستند. آنچه این نوع درخت‌ها را از هم متمایز می‌کند روش ساخته شدن آنها یا نوع ارتباط معنایی بین گره‌های آنها است. به عنوان نمونه در یک درخت جستجوی دودویی مقدار تمام عناصر زیردرخت چپ هر گره از مقدار آن گره کوچکتر و مقدار تمام عناصر زیردرخت راست از آن بزرگتر هستند و در یک مکس هیپ مقدار هر گره از تمام مقادیر فرزندان خود بزرگتر یا مساوی است.

  

پیمایش درخت دودویی

  [برگرد بالا]

هدف از پیمایش یک گراف دسترسی به تک تک گره‌های آن به منظور انجام عملیات مورد نظر (مانند جستجو) است. الگوریتم‌های پیمایش اول عمق و پیمایش اول سطح دو روش پرکاربرد پیمایش هر گراف دلخواه است که برای درخت‌ها به عنوان نوع ویژه‌ای از گراف‌ها نیز قابل استفاده هستند. پیمایش پیشوندی (پیش‌ترتیب یا PreOrder)، پیمایش میانوندی (میان‌ترتیب یا InOrder) و پیمایش پسوندی (پس‌ترتیب یا PostOrder) نیز سه نوع متداول پیمایش درخت دودویی هستند.

  

پیمایش میانوندی

  [برگرد بالا]

تعریف بازگشتی پیمایش میانوندی یک درخت دودویی به این ترتیب است:

  1. پیمایش زیردرخت چپ ریشه به روش میانوندی
  2. پردازش ریشه
  3. پیمایش زیردرخت راست ریشه به روش میانوندی

به عنوان نمونه برای درخت فوق نتیجه پیمایش میانوندی به این ترتیب خواهد شد:

9  1  2  4  5  7  8

  

کاربرد پیمایش میانوندی

  [برگرد بالا]

مشهورترین کاربرد پیمایش میانوندی در درخت‌های جستجوی دودویی است. بر اساس تعریف درخت جستجوی دودویی اگر درخت با روش میانوندی پیمایش شود عناصر به صورت مرتب شده از کوچک به بزرگ پردازش می‌شوند. چرا که ابتدا زیردرخت چپ (همه عناصر کوچکتر از گره) سپس خود گره و در نهایت زیردرخت راست (همه عناصر بزرگتر از گره)‌ پردازش می‌شود. پس هر گره از لحاظ ترتیب در جای درست قرار می‌گیرد. نمونه زیر یک درخت جستجوی دودویی و پیمایش میانوندی آن را نشان می‌دهد.

  

درخت جستجوی دودویی

1  3  4  5  6  8  9

  

چنین پیمایشی یک ترتیب صعودی از عناصر درخت BST تولید می‌کند و اگر سه مرحله پیمایش را معکوس کنیم در نهایت به یک ترتیب نزولی می‌رسیم (چرا؟).

  

پیمایش پیشوندی

  [برگرد بالا]

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

  1. پردازش ریشه
  2. پیمایش زیردرخت چپ ریشه به روش پیشوندی
  3. پیمایش زیردرخت راست ریشه به روش پیشوندی

برای درخت فوق نتیجه پیمایش پیشوندی به این ترتیب خواهد شد:

4  2  9  1  7  5  8

در این نوع پیمایش خود گره در اولویت بیشتری نسبت به فرزندانش قرار دارد.

  

کاربرد پیمایش پیشوندی

  [برگرد بالا]

یک کاربرد مهم پیمایش پیشوندی ساخت کپی از درخت است. بر اساس این نوع پیمایش همواره ریشه‌ای‌ترین گره در ابتدا و سپس فرزندان آن است و بنابراین می‌توان یک ساختار درخت مشابه درخت اصلی از بالا به پایین ساخت.

  

پیمایش پسوندی

  [برگرد بالا]

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

  1. یمایش زیردرخت چپ ریشه به روش پسوندی
  2. پبمایش زیردرخت راست ریشه به روش پسوندی
  3. پردازش ریشه

به عنوان نمونه برای درخت فوق نتیجه پیمایش پسوندی به این ترتیب خواهد شد:

1  9  2  5  8  7  4

در این نوع پیمایش خود گره در اولویت آخر قرار دارد.

  

کاربرد پیمایش پسوندی

  [برگرد بالا]

یک کاربرد پیمایش پسوندی در زمان حذف درخت است. چرا که بر اساس این نوع پیمایش همواره ریشه‌ای‌ترین گره در انتها پردازش می‌شود و قبل از آن تمام گره‌های زیردرخت‌های چپ و راست حذف می‌شوند. بنابراین می‌توان فضای اختصاص داده شده به درخت را با رویکرد پایین به بالا آزاد کرد. در مثال بالا نیز مشخص است که اگر قرار بر حذف کردن گره پردازش شده باشد، در هر مرحله یک برگ از درخت حذف می‌شود.

  

مرتبه زمانی الگوریتم‌های پیمایش درخت دودویی

  [برگرد بالا]

در عملیات پیمایش یک گراف تمام گره‌های آن بازدید می‌شوند. بنابراین اگر $n$ بیانگر تعداد گره‌ها باشد، همواره $n$ عمل پردازش اطلاعات وجود دارد. اما بسته به نوع پیاده‌سازی ممکن است میزان حافظه مصرفی متفاوت باشد. پیاده‌سازی بازگشتی پیمایش‌های سه‌گانه فوق در زبان برنامه‌نویسی ++C به ترتیب زیر است که در آنها منظور از node یک ساختار تعریف شده به عنوان گره درخت است.

    

void preorder(node *root) {

    if(!root)

        return;

    cout << "(" << root->info << ")";

    preorder(root->Lchild);

    preorder(root->Rchild);

}

  

void inorder(node *root) {

    if(!root)

        return;

    inorder(root->Lchild);

    cout << "(" << root->info << ")";

    inorder(root->Rchild);

}

  

void postorder(node *root) {

    if(!root)

        return;

    postorder(root->Lchild);

    postorder(root->Rchild);

    cout << "(" << root->info << ")";

}

  

در این نوع پیاده‌سازی تعداد فراخوانی‌های بازگشتی (که باعث مصرف حافظه می‌شود) به اندازه عمق درخت است. بنابراین مرتبه حافظه مصرفی بین $O(log_2 n)$ و $O(n)$ است. این مسئله در مورد پیاده‌سازی غیربازگشتی با استفاده از پشته نیز صدق می‌کند. اما قطعه کد زیر یک پیاده‌سازی غیربازگشتی بدون استفاده از پشته است که مقدار حافظه مصرفی آن مستقل از تعداد گره‌ها و عدد ثابتی است.

  

void preorder(node *root) {

    node *curNode = root;

    node *fromNode = NULL;

    while(curNode) {

        if(fromNode == curNode->parent) {

            cout << "(" << curNode->value << ")";

            fromNode = curNode;

            if(curNode->left) {

                curNode = curNode->left;

                continue;

            }

            if(curNode->right) {

                curNode = curNode->right;

                continue;

            }

            curNode = curNode->parent;

        }

        else if(fromNode == curNode->left) {

            fromNode = curNode;

            if(curNode->right) {

                curNode = curNode->right;

                continue;

            }

            curNode = curNode->parent;

        }

        else {

            fromNode = curNode;

            curNode = curNode->parent;

        }

    }

}

  

void inorder(node *root) {

    node *curNode = root;

    node *fromNode = NULL;

    while(curNode) {

        if(fromNode == curNode->parent) {

            fromNode = curNode;

            if(curNode->left) {

                curNode = curNode->left;

                continue;

            }

            cout << "(" << curNode->value << ")";

            if(curNode->right) {

                curNode = curNode->right;

                continue;

            }

            curNode = curNode->parent;

        }

        else if(fromNode == curNode->left) {

            fromNode = curNode;

            cout << "(" << curNode->value << ")";

            if(curNode->right) {

                curNode = curNode->right;

                continue;

            }

            curNode = curNode->parent;

        }

        else {

            fromNode = curNode;

            curNode = curNode->parent;

        }

    }

}

  

void postorder(node *root) {

    node *curNode = root;

    node *fromNode = NULL;

    while(curNode) {

        if(fromNode == curNode->parent) {

            fromNode = curNode;

            if(curNode->left) {

                curNode = curNode->left;

                continue;

            }

            if(curNode->right) {

                curNode = curNode->right;

                continue;

            }

            cout << "(" << curNode->value << ")";

            curNode = curNode->parent;

        }

        else if(fromNode == curNode->left) {

            fromNode = curNode;

            if(curNode->right) {

                curNode = curNode->right;

                continue;

            }

            cout << "(" << curNode->value << ")";

            curNode = curNode->parent;

        }

        else {

            fromNode = curNode;

            cout << "(" << curNode->value << ")";

            curNode = curNode->parent;

        }

    }

}

  

در این قطعه کدها تنها دو متغیر برای پیمایش کافی است و تعداد گره‌ها یا عمق درخت تاثیری در میزان حافظه مصرفی ندارند. متغیر curNode به گره جاری اشاره دارد و متغیر fromNode به گره ماقبل گره جاری (یعنی جایی که از آن به سمت گره جاری حرکت کردیم) اشاره می‌کند. این متغیر زمان حرکت به سمت برگ‌ها به والد گره اشاره می‌کند و زمان صعود به سمت ریشه درخت به یکی ار فرزندان گره. با مشخص بودن دو گره آخر پیمایش شده به راحتی می‌توان مسیر پیمایش را تشخیص داد.

نکته ۱: اگر همه عبارات چاپ گره پردازش شده از توابع فوق حذف شوند هر سه تابع دقیقا یک کد می‌شوند! ار این مسئله می‌توان به عنوان راهنمای روش کار و تحلیل الگوریتم استفاده کرد.

نکته ۲: اگر دو پیمایش مختلف از یک درخت دودویی موجود باشد، پیمایش سوم از طریق آنها قابل تولید است.


این نوشته دی ماه ۱۳۸۵ با عنوان «پیمایش درخت جستجوی دودویی» از وب‌سایت برنامه‌نویسی و طراحی الگوریتم منتشر شده بود.

تا کنون ۳ امتیاز ثبت شده
نوشته لایک نداشت؟
 
به اشتراک گذاری نوشته

algs.ir/sp3opkr

اشتراک‌گذاری در LinkedIn     اشتراک‌گذاری در Twitter     ارسال با Telegram


نام: *  

پست الکترونیک (محرمانه):

پیام: *  

• فاطمه
۱۹ دی ۱۳۸۵، ساعت ۰۸:۱۳

سلام

عجب...پس شما هم قضيه شنگول و منگولو مي دونستين

خداييش جالب نبود؟؟؟!!!

من هي به اين آرزو مي گم خوبه اون مي گه نه...

(تا نيست يه كم زيرابشو بزنم) مي دونين آرزو دوست داره مطالبي كه تو وبلاگ مي ذاريم هميشه سطح بالا باشه و ترجيحا هيچ كس نفهمه. اما من فكر مي كنم بعضي وقتا يه مطلب ساده هم مي تونه جالب باشه!!!

در ضمن ممنونم كه شما اينقدر سريع العجابه ايد(منظورم اينه كه همون ظهر نظر دادين)

• حمیدرضا
۱۹ دی ۱۳۸۵، ساعت ۰۸:۳۱

با سلام و عرض خسته نباشید:

سایتی (یا به قول خودتان وبلاگی) فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده جذابی دارید.

لطفا یک کتاب هم در ارتباط با pointer و یکی هم در باره ی file بگذارید .

فوق العاده ممنون

• maryam
۱۹ دی ۱۳۸۵، ساعت ۱۷:۰۸

حميد آقا چقدر با اشتها هستيد

• آرزو
۲۰ دی ۱۳۸۵، ساعت ۰۱:۴۹

سلام

خوبین؟

خوش به حالتون با این خواننده های فعالتون!!!!

راستی فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده فوق العاده مفید و جذاب و عالی و پر محتوایی دارین...

مزیت نظر من:

2 تا فوق العاده از اون نظر بالایی بیشتر داره...

مرسی

• آرزو
۲۰ دی ۱۳۸۵، ساعت ۰۲:۰۴

آقا مسعود چند تا کارتون داشتم....حالا که نیستین یکیشو اینجا می گم.....

بهترین نرم افزار ترجمه ی زبان در حال حاضر چیه؟ دارم میفتم تو کار ترجمه و....

• آرزو
۲۰ دی ۱۳۸۵، ساعت ۰۲:۱۵

راستی دوباره یه سری به ما بزنین....

• فاطمه
۲۱ دی ۱۳۸۵، ساعت ۰۲:۲۵

سلام

واقعا با اين نظراتي كه دارين بايد به شما خسته نباشيد بگم

يكي ازتون مقاله مي خواد، يكي پروژه مي خواد، يكي برنامه مي خوادو...

سر آدم سوت مي كشه........

تازه اونم درست سر امتحاناي خودتون

خيلي جالبه نه؟؟؟

مسعود اقدسی فام
۲۲ دی ۱۳۸۵، ساعت ۰۱:۴۲

فاطمه خانم حق با شماست. متاسفانه . . .

من نمی تونم کمکی بکنم.

• soamm
۲۴ دی ۱۳۸۵، ساعت ۰۲:۳۱

سلام لطفاً در مورد الگوریتم های np مرا راهنمایی کنید. ممنون

• آرزو
۲۸ دی ۱۳۸۵، ساعت ۰۰:۲۹

سلام

اوهههههههه چقدر نظر!!!!!!!!!!!!

کم پیدایین؟

چه خبره؟

آقا یه سری به ما بزنین یه خبرایی داریم....حتما!!!!!!!!!!!!!!!

راستی از آف هاتونم که خبری نیست؟قهرین؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

• فاطمه
۱۷ اردیبهشت ۱۳۸۶، ساعت ۱۵:۳۶

عجب!!!

.

.

.

تغییراتی بس اساسی دادید اینجا رو!!!

ولی خیلی خوبه

یعنی خیلی بهتر شده

هم ظاهری و هم از نظر نظم کاریتون

موفق باشید

•  parmis
۳ خرداد ۱۳۸۶، ساعت ۰۰:۴۴

salam shoma har chand vaght bein web sar mizanin?khahesh mikonam age ye sari zadid in barnameye maro ham benvisid mamnoon

مسعود اقدسی فام
۳ خرداد ۱۳۸۶، ساعت ۱۳:۲۵

پرمیس عزیز من روزی چند بار یه سایت سر می زنم. نگران این مطلب نباشید!! اما نه وظیفه ماست و نه خواسته ماست که درخواستهای برنامه های آماده خوانندگان رو جواب بدیم و واسشون برنامه بفرستیم. چون هم اینطوری آموزشی در کار نیست و هم شما بد عادت می شید!!!

موفق باشید.

• اعظم
۲۰ خرداد ۱۳۸۶، ساعت ۰۸:۲۷

چرا در مورد پیمایش سطح به سطح چیزی نمیگویید

•  parmis
۲۳ خرداد ۱۳۸۶، ساعت ۰۱:۴۸

salam dar morede harfi ke zadid

pas khaheshan mardomo sare kar nazarid

ba tashakor az site jalebetoon

مسعود اقدسی فام
۲۳ خرداد ۱۳۸۶، ساعت ۰۹:۳۹

پرمیس جان چه سر کاری؟

مگه جایی عنوان شده که درخواستهای خوانندگان براشون ارسال می شه؟

مرسی از لطفت.

• لیلا
۲۶ خرداد ۱۳۸۶، ساعت ۱۳:۱۶

با سلام:

من باید برنامه ای در مورد پیمایش جنگل(مجموعه ای از درختها) بنویسم و برنامه ای راحع به تبدیل جنگل به درخت.لطفاَ در این باره مرا راهنمایی کنید.

• nahid
۲۹ خرداد ۱۳۸۶، ساعت ۰۷:۳۸

سلام لطفا کدحذف از یک درخت دودویی را می خواهم نوشته شده با ++c

• samir
۳۱ خرداد ۱۳۸۶، ساعت ۱۰:۴۳

عالی بود دستتون درد نکنه اگر شد درباره پیچیدگی زمانی برنامه ها و مرتبه اجرایی هم بنویسید.

• khatereh
۳ تیر ۱۳۸۶، ساعت ۰۶:۰۴

salam

age momken ik seri mataleb dar mored ADT gharar bedin

mamnon

•  parmis
۱۱ تیر ۱۳۸۶، ساعت ۰۲:۴۲

salam

khaste nabashid

site jalebiye vase nazar khondan

khob belakhare adam ba nazar khondan ham dar karesh pishraft mikone

• mjtb1302
۱۴ آبان ۱۳۸۶، ساعت ۱۱:۵۲

با سلام

........به زیارت تو دیری ............بگذشتم از کثیری..............!!!!!!!

اگه میشه یه مطلب یا مقاله از خودتون یا دیگران درباره مقایسه ساختمان داده در چند زبان برنامه نویسی مثل پاسکال و دلفی و جاوا و کیو بیسیک و ... در اختیارم قرار بدید.

اگه وقت ندارید حداقل چند کتاب یا سایت مرتبط رو معرفی کنید.

ممنون

• سحر
۳ آذر ۱۳۸۶، ساعت ۱۲:۵۳

سلام

خسته نباشید

لطفا کمک کنید

یه سوال در مورد درخت ها دارم

سوال من اینکه چه طور می توان برنامه ای نوشت که نمایش preorder , inorder یک درخت را دریافت کند و با استفاده از اون درخت را به صورت پیمایش سطحی نمایش بدهد

• محسن
۶ آذر ۱۳۸۶، ساعت ۱۱:۵۹

با سلام خدمت شما اگه امکان داره برام در مورد ساختمان داده های پیشرفته مطلب بزارید آخه پروژه آخر ترممه

• leila
۸ آذر ۱۳۸۶، ساعت ۱۳:۱۹

salam.mamnun az matalebe khubi ke dar aekhtyare ma mizarid.mikhastam age momkene ye ketabe khub rajebe data structure ke matalebo az sade be moshkel tozih dade be mailam befrestid.age codash be zabane C# bashe ali mishe.khyli khyli mamnun.

• ابی
۹ آذر ۱۳۸۶، ساعت ۰۰:۳۳

سلام

یه سوال داشتم

چرا بچه های مردم رو سرکار مس ذارید

شما هیچ عرضه ای ندارید برنامه ای بنویسین

ذغث

مسعود اقدسی فام
۹ آذر ۱۳۸۶، ساعت ۰۳:۳۰

ابی عزیز

ما هیچ جا اعلام و ادعا نکردیم که به همه درخواستهای برنامه خوانندگان جواب می دیم.

با این حال شرمنده

• سحر
۹ آذر ۱۳۸۶، ساعت ۱۰:۳۵

واقعا که همه ی ما رفتیم سر کار

این جا یه نفر پیدا نمیشه که بگه ماستت به چند من

• سحر
۹ آذر ۱۳۸۶، ساعت ۱۰:۴۲

بابا یه مسلمون (البته از نوع آقای اقدسی فام یا مشابه اون که یه کمی از این درس های ما سر در بیاره) پیدا نمیشه

که جواب ما رو بده

من نمی دونم یکی باید جواب منو بده والا

خودم یه خاکی به سرم می ریزم

• مجید ذخیره
۱۰ آذر ۱۳۸۶، ساعت ۰۶:۰۷

لطفا چند تا سایت برای دانلود کتابهای الکترونیک در زمینه رشته علوم کامپیوتر مهندسی کامپیوتر و... معرفی کنید . متشکرم

• عبدالله
۱۳ آذر ۱۳۸۶، ساعت ۱۱:۱۵

مطالب خوبی در سایت دارید

فقط کمی جامع تر باشد

من دانشجو کامپیوتر دانشگاه شمسی پور تهران هستم

خیلی دوست دارم از این تبادل اطلاعات در این سایت

به امید آشنایی بیشتر

• اناهيتا
۶ دی ۱۳۸۶، ساعت ۲۳:۲۶

سلام

وبلاگيتون خيلي خوبه...

كاشكي بتونين مباحث و به زبونه ساده تري گسترش بدين

• yalda
۱۲ دی ۱۳۸۶، ساعت ۱۱:۵۹

برنامه درخت دودویی که متد های درج وحذف وجستجو را اعمال کند خیلی فوری لطفا

• امیر
۱۲ دی ۱۳۸۶، ساعت ۱۷:۰۰

یه برنامه احتیاج دارم که درج و حذف درخت دودویی رو پیمایش کنه و درج و حذف تو max heap رو پیمایش کنه خیلی ممنون.

• اميرحسين
۱۲ دی ۱۳۸۶، ساعت ۲۲:۲۱

با سلام.لطفا اگر امكان داره براي من برنامه پيمايش پسوندي درخت دودويي نخ كشي شده به صورت غير بازگشتي را تا فردا بنويسيد...ممنون ميشم چون نمره پايان ترمم به اين بستگي داره

• shahla
۱ بهمن ۱۳۸۶، ساعت ۲۳:۳۵

سلام

من ميخواستم بدونم با چه روشي ميشه يك درخت رو پيمايش كرد كه نياز به حافظه اضافي نداشته باشه.

ممنون.

• zahra
۶ بهمن ۱۳۸۶، ساعت ۱۲:۴۴

من که ساختمان افتادم اخ که چقد سوختم کلا درس مزخرفیه.

اصلا برنامه نویسی کلا مزخرفه

• asma
۱۳ بهمن ۱۳۸۶، ساعت ۱۵:۳۱

ba salam

mikhastam lotf konid darbareye tabdile ebarate riyazi

be derakht be zabane java tozihati dahid

masalan amale moshtagh gereftan

ra anjam dahad.

moteshakeram

• mostafa
۲۲ اسفند ۱۳۸۶، ساعت ۰۰:۲۸

best ...good luck

• zahra
۲۶ اردیبهشت ۱۳۸۷، ساعت ۱۶:۰۸

salam

mikham bedunam ba estefade az reshteye preorder va inorder KODHAYE

sakhtane derakhti be surate postorder be che surate

(dar zabane c++ kheyli mamnumn)

lotfan kheyli zud baram mail bezanid kheyli ajale daram

• فاطمه
۲۳ تیر ۱۳۸۷، ساعت ۲۳:۲۰

سلام.سایت خیلی خوبی درست کردید.خسته نباشید.

• bahar
۲۴ تیر ۱۳۸۷، ساعت ۰۸:۵۶

اين چه جور سايت آموزشي بود همه از شما تقاضاي لقمه ي جويده شده رو دارن يا پروژه ي آماده رو دارن يا در خواست هايي ازاين قبيل واقعاكه؟

مسعود اقدسی فام
۲۴ تیر ۱۳۸۷، ساعت ۱۳:۱۹

بهار جان حق با شماست. اما به هیچ کدوم از این درخواستها پاسخی داده نمی شه.

• ahmad
۲۴ تیر ۱۳۸۷، ساعت ۲۱:۰۷

سلام لطف می کنید برام از درخت های نخ کشی شده تو ساختمان داده(c)توضیح بدین؟

1برنامه لازم دارم که درخت های نخ کشی شده رو تولید کنه.

مشکلم تو نودهای eftthread,rightthread هستش.

خیلی ممنونم.