سلام
اگر ساختمان داده داشته باشيد حتما به به پيمايش هاي پيش ترتيب و پس ترتيب و ميان ترتيب بر خورد كرده ايد . براي نوشتن آنها در صورت استفاده از c/c++ يا Java از كلاس(سی ++ و جاوا) و struct در سي براي پياده سازي استفاده مي كنيد .
به اين صورت كه يك كلاس TreeIterator (مثلا) استفاده مي كنيد و با استفاده از ارث بري كلاسی ديگر با عنوان PostOrder یا InOrder یا
PreOrder ساخته که با استفاده از یک پشته و یک کلاس و یک شمارنده این عمل را انجام دهیم .
همان طور که می بینید یک پروسه ی طولانی و حتما با اشتباهات فراوان همراه است اما جند روز پیش در یک وبلاگ روشی جالب دیدیم که بدین شرح بود :
نکته : این برنامه به زبان جاواست که با اندکی تغییر برای سی++ قابل استفاده است .
void nonrecpreorder(BinaryTree tree){
BinaryNode currnode=tree.root;// یک گره ایجاد و مقدار آن را برابر ریشه ی درخت قرار می دهد
while(true){ // یک حلقه ی بی نهایت
if(currnode==null) // این شرط برای چیست؟
break;
//int visited=0 in the BinaryTree defined !
if(currnode.left!=null && currnode.Visited!=1) //
currnode=currnode.left;
else if(currnode.right!=null && currnode.right.Visited!=1)
currnode=currnode.right;
else if(currnode.Visited==0)
{
// element defined like : T element //in BinaryTree
System.out.print(currnode.element+ ” “);
currnode.Visited=1;
}
else
{
currnode=currnode.parent;
}
}
}
جالب بود نه !