PDA

View Full Version : سوال در مورد درخت نخ کشی (ساختمان داده)



f.a.z11
پنج شنبه 17 دی 1388, 09:23 صبح
سلام من توی درخت های نخ کشی مشکل دارم لطفا توضیح بدید

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

mortezamsp
پنج شنبه 17 دی 1388, 10:48 صبح
اگه منظورتوتن تبدیل یه درخت به درخت نخی هست ، روش تبدیل درخت دودویی به نخی اینطوریه :
1_در یک سطح همه گره هایی که فرزند یک پدر هستند رو بهم وصل میکنیم
2_همه اتصال ها به گره پدر را بجز سمت راست ترین اتصال ها حذف میکنیم
3_گره های متصل به هم در یک سطح را ، 45 درجه میچرخانی تا شکلش خوشگل بشود


و اگه منظورت پیمایش هست ، این پیمایش inorder هست :
1_برای پیمایش میانوندی ، گره سمت راست (درصورت وجود ) یا آخرین گره در سمت چپ، گره بعدی هستند .
2_

تابعي که گره بعدي يک گره د رپيمايش ميانوندي ر به ما ميدهد :
function insucc( t: treepointer ) : treepointer ;
var
temp : treepointer ;
begin
temp = rightCHild( t ) ;
if( rightTag(t) != TRUE ) then
while( leftTag(temp) != TRUE ) do
temp = leftCHild(temp) ;
insucc = temp ;
end ;
فراخواني هاي متوالي تابع فوق که درنهايت پيمايش ميانوندي را ميسازد :
procedure inorder ( t: treepointer ) ;
var
temp : treepointer ;
begin
temp = t ;
repeat
temp = insucc( temp ) ;
if( temp != t ) then
write( data( t ) ) ;
until ( temp=t )
end;
بعدشم ، "پیش ترتیب" و "پس ترتیب" دیگه چیه ؟ یعنی اصلا گره سمت چپ یا راست نداشته باشیم ؟ آره ؟ میشه بهتر توضیح بدی واسموووووووون ؟