مطالبی که باید بدانیم :

درخت دودویی (binery) : درختی که فقط دو فرزند دارد یعنی هر ریشه در این درخت از دو فرزند تشکیل می شود فرزند راست (rchild) و فرزند سمت چپ (lchild)

روش نمایش درخت دودویی : سه روش برای نمایش درخت دودویی وجود دارد :                       

1. preorder

2. inorder

3. postorder

1. نمایش درخت به روش preorder :

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

الگوریتم :

1. دیدن ریشه

2. نمایش فرزند چپ

3. نمایش فرزند راست

2. نمایش درخت به روش inorder :

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

1. نمایش فرزند چپ

2. دیدن ریشه

3. نمایش فرزند راست

3. نمایش درخت به روش postorder :

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

1. نمایش فرزند چپ

2. نمایش فرزند راست

3. دیدن ریشه

 

توضیح برنامه :

در قسمت اول یک استراکت به اسم ند ساخته می شود که یک متغیر از نوع int به نام value دارد و دو اشاره گر که یکی به فرزند راست درخت اشاره دارد و دیگری به فرزند چپ اشاره دارد و پس از اتمام تعریف ساختمان یک شیئ از نوع pointer  به نام root تعریف می کنیم

در قسمت دوم وظایف insert  ساختن یک گره جدید را به عهده دارد که هنگام فراخوانی گره ای جدید را می سازد و همراه با یک پارامتر از نوع ساختمان ند می باشد

در قسمت سوم preorder  الگوریتم نمایش درخت به روش preorder  را برای ما پیاده سازی می کند و در قسمت  inorder  و  post order  هم به همین ترتیب می باشد

در قسمت  main  برنامه در حلقه  while  منویی 3 گزینه ای ساخته می شود که گزینه اول وظیفه مقدار دهی به درخت را دارد و گزینه دوم وظیفه نمایش درخت به 3 روش گفته شده را دارد و گزینه سوم برای خروج می باشد و با انتخاب یکی از این 3 گزینه حلقه تصمیم switch به کار افتاده و انتخاب شما را اجرا می کند