ساختمان داده ها، یکی از دروس مهم و شیرین دانشگاهی است که به صورت پایه ای برای دروس مختلف از آن استفاده می شود، این درس در کنکور کارشناسی ارشد کامپیوتر و کنکور دکتری هوش مصنوعی و نرم افزار از دروس با ضرایب بالا می باشد. به همین دلیل آموزش ساختمان داده ها توسط یکی از بهترین مدرسین مسلط به مباحث ساختمان داده ها، ارائه شده است.
سرفصل هایی که در این آموزش به آن پرداخته شده است:
- بخش یکم: مرتبه اجرایی
- بخش دوم: زیربرنامه های بازگشتی
- بخش سوم: آرایه
- بخش چهارم: صف و پشته
- بخش پنجم: لیست پیوندی
- بخش ششم: درخت
- بخش هفتم: گراف
- بخش هشتم: مرتب سازی
- بخش نهم: درهم سازی
برای توضیحات بیشتر و تهیه این آموزش لطفا به لینک زیر مراجعه بفرمائید:
http://faradars.org/fvds9402
22. ها دادهساختمان
faradars.org/fvds9402
پیمایش های الگوریتم
postorderinorderpreorder
post(p){
if (p==null) return;
post ( p -> left );
post ( p -> right );
cout<<p -> data;
}
in (p){
if (p==null) return;
in ( p -> left );
cout<<p -> data;
in ( p -> right );
}
pre (p){
if (p==null) return;
cout<< p -> data;
pre ( p -> left );
pre ( p -> right );
}
22
سرداﺮﻓ
FaraDars.org
23. ها دادهساختمان
faradars.org/fvds9402
و پیشوندی های پیمایش داشتن با دودویی درخت رسممیانوندی
رسمدرختدودوییباداشتندوپیمایشزیر:
Preorder : a b d f c e g
Inorder : d f b a e g c
23
سرداﺮﻓ
FaraDars.org
25. ها دادهساختمان
faradars.org/fvds9402
درخت رسمپسوندی و پیشوندی های پیمایش داشتن با دودویی
اگرپیمایشهایپیشوندیوپسوندییكدرختدودوییدردسترس،باشندمحلهایهگرتكفرزندیراتوانینممشخصکرد.
بنابرایندرصورتوجودگرههایتك،فرزندیچندیندرختمیتوانایجادکردکهپیمایشpreorderوpostorderآنها
باهمبرابرباشند.تعدادایندرختهابرابراستبا:^k2،(k:تعدادگرههایتكفرزندی)
مثال:
Preorder : A B C D E F G H I
Postorder : C E D B H I G F A
چهاردرختممکن:
25
سرداﺮﻓ
FaraDars.org
30. ها دادهساختمان
faradars.org/fvds9402
درختدودوییشده کشی نخ(( A Threaded Binary Tree
یكدرختدودوییباnگرهدارای2nگرهاشاراست.
n-1گرهاشاراستفادهشدهوn+1گرهاشاراستفادهنشدهاست.
بااستفادهازگرهایهاشاربدوناستفادهتوانیمبهعناصرقبلییابعدیدریكپیمایشاشارهکردکهباعثباالرفتنسرعتپیمایش
درختشودیم.
بهدرختیکهازگرهایهاشاربدوناستفادهآناینچنیناستفادهشود،درختنخیگویندیم.
H D I B E A F C G
30
سرداﺮﻓ
FaraDars.org
31. ها دادهساختمان
faradars.org/fvds9402
نخی درخت در گره ساختار
struct node{
struct node *left ;
struct node *right ;
char data ;
short int lflag ;
short int rflag ;
};
اگرlflag=1،باشدleftگرعادیبهفرزندچپاستهگرنخیاستودرغیراینصورتاشارهیكاشار.
اگرrflag=1،باشدrightگرعادیبهفرزندراستاستهگرنخیاستودرغیراینصورتاشارهیكاشار.
31
سرداﺮﻓ
FaraDars.org
53. ها دادهساختمان
faradars.org/fvds9402
دودویی جستجوی الگوریتم
search( t , key)
{
if ( t==NULL or key == t -> data )
return t ;
if ( key < t -> data )
return search ( t -> left , key ) ;
else
return search ( t -> right , key ) ;
}
53
سرداﺮﻓ
FaraDars.org
56. ها دادهساختمان
faradars.org/fvds9402
در درج الگوریتمBST
داده با گره یک درجitemدودویی جستجوی درخت درt
insert( t , item ) {
p = search( t , item );
if ( p or !t ) {
n = malloc(sizeof(t));
n -> data = item ; n -> left = NULL; n -> right = NULL;
if ( t )
if (item < p -> data ) p -> left = n; else p -> right = n;
else
t = n;
}
}
56
سرداﺮﻓ
FaraDars.org
60. ها دادهساختمان
faradars.org/fvds9402
در ماکزیمم و مینیم عنصر کردن پیداBST
عنصریکهکلیدآندرBST،مینیمماسترامیتوانبادنبالکردناشارهگرهایفرزندانچپازریشهتارسیدنبهNULLپیداکرد.
min( t ) {
while ( t -> left != NULL )
t = t -> left;
return t;
}
گریبهعنصرهروالزیراشارماکزیممدرزیردرختمشتقشدهازtگرداندیرابرم:
max( t ) {
while ( t -> right != NULL )
t = t -> right;
return t;
}
60
سرداﺮﻓ
FaraDars.org