SlideShare a Scribd company logo
1 of 87
Download to read offline
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مدرس‬:
‫شیرافکن‬ ‫فرشید‬
‫دکتری‬ ‫دانشجوی‬‫تهران‬ ‫دانشگاه‬
(‫ارشد‬‫کارشناسی‬ ‫و‬‫کارشناسی‬:‫افزار‬ ‫نرم‬ ‫کامپیوتر‬( )‫دکتری‬:‫انفورماتیک‬ ‫بیو‬)
‫ششم‬ ‫فصل‬(‫اول‬ ‫قسمت‬)
‫درخت‬
1
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫ها‬ ‫داده‬ ‫ساختمان‬ ‫بندی‬ ‫دسته‬
2
1-‫خطی‬:‫آرایه‬-‫صف‬-‫پشته‬-‫لیست‬‫پیوندی‬
2-‫غیر‬‫خطی‬:‫درخت‬-‫گراف‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫اولیه‬ ‫تعاریف‬
3
‫درخت‬‫مجموعه‬‫محدودی‬‫از‬‫یك‬‫یا‬‫چند‬‫گره‬‫می‬‫باشد‬‫که‬‫دارای‬‫گره‬‫خاصی‬‫به‬‫نام‬‫ریشه‬‫است‬‫و‬‫بقیه‬‫‌ها‬‫ه‬‫گر‬‫به‬‫مجموعه‬‫مجزا‬‫تقس‬‫یم‬
‫‌شوند‬‫ی‬‫م‬‫که‬‫هر‬‫یك‬‫از‬‫‌ها‬‫ه‬‫مجموع‬‫خود‬‫نیز‬‫یك‬‫درخت‬‫می‬‫باشند‬.
‫ریشه‬‫گره‌ای‌که‌دارای‌پدر‌نیست‬‌‌.
‫برگ‬‌‫گره‌بدون‌فرزند‬(‫گره‌با‌درجه‌صف‬‫ر‬)
‫داخلی‬ ‫گره‬‫گره‌غیر‌برگ‌و‌ریشه‬
‫برادر‬‫گره‌هایی‌با‌یك‌پدر‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫گره‬ ‫ارتفاع‬ ‫و‬ ‫درخت‬ ‫ارتفاع‬
4
‫ارتفاع‬‫گره‬‌‫طول‌بزرگترین‌مسیر‬‌‫از‌آن‌گره‌به‬‫ب‬‌‫رگ‬
‫درخت‬ ‫ارتفاع‬‫ارتفاع‌ریشه‬
‫عمق‬(‫سطح‬)‫گره‬‌‫طول‌مسیری‌از‌ریشه‬‌‫به‬‫آن‌گره‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫ندارد‬ ‫حلقه‬ ‫درخت‬.
‫شکل‌زیر‌درخت‌نیست‬.
5
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫دودویی‬ ‫درخت‬
•‫درخت‌دودویی‬‌:‌‫درخت‬‌‫مرتبی‌که‌هر‌عنصر‌آن‬‫حداکثر‬‌‫دارای‌دو‌فرزند‬(‫فرزند‌چپ‌و‌راست‬‌)‫باشد‬.
•‫درخت‌مرتب‬‌:‌‫درختی‬‫که‌ترتیب‌فرزندان‌هر‌گره‌مشخص‌است‬.
6
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫پر‬ ‫دودویی‬ ‫درخت‬
‫درخت‬‫دودویی‬‫پر‬:‫درختی‬‫که‬‫در‬‫آن‬‫هر‬‫گره‬‫به‬‫غیر‬‫از‬‫‌ها‬‫گ‬‫بر‬‫دارای‬‫دو‬‫فرزند‬‫است‬.
‫مثال‬‌‌:‌‫یك‌درخت‌دودویی‌پر‌با‬31‌‫گره‌و‌ارتفاع‬4:
‫تعداد‬‫‌ها‬‫گ‬‫بر‬:2h‫تعداد‬‫گره‬:n = 2h+1 – 1‫تعداد‬‫‌های‬‫ه‬‫گر‬‫داخلی‬:floor (n/2)
7
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫کامل‬ ‫دودویی‬ ‫درخت‬
‫هر‬،‫سطح‬‫به‬‫جز‬ً‫ال‬‫احتما‬‫آخرین‬‫سطح‬،‫‌طور‬‫ه‬‫ب‬‫کامل‬‫پر‬،‫‌است‬‫ه‬‫شد‬‫و‬‫همۀ‬‫‌ها‬‫ه‬‫گر‬‫تا‬‫جایی‬‫که‬‫ممکن‬‫است‬‫در‬‫چپ‬‫درخت‬‫قرار‬‫‌گیر‬‫ی‬‫م‬‫ند‬.
8
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫برگ‬ ‫تعداد‬‫ها‬
‌‫تعداد‌برگها‌در‌یك‌درخت‬k‌‫تایی‬:
‌‫درخت‬2‌‫تایی‬‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌:‌‫درخت‬3‌‫تایی‬:
9
1...)2()1( 210   nnknkn kk
120  nn
3,2 02  nn11,8,1 023  nnn
12 230  nnn ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫گذاری‬ ‫شماره‬
‫در‬‫هر‬‫درخت‬‫دودویی‬‫کامل‬‫شماره‬‫گذاری‬،‫شده‬‫برای‬‫هر‬‫گره‬‫با‬‫اندیس‬i‫قواعد‬‫زیر‬‫برقرار‬‫است‬:
1)‫اگر‬i=1،‫باشد‬‫آنگاه‬‫ریشه‬‫است‬.
2)‫اگر‬i< >1،‫باشد‬‫آنگاه‬‫والد‬‫آن‬،‫در‬‫حد‬‫پایین‬i/2‫است‬.
3)‫اگر‬2i<=n،‫باشد‬‫آنگاه‬‫فرزند‬‫چپ‬،‫آن‬‫در‬2i‫است‬.
4)‫اگر‬2i+1<=n،‫باشد‬‫آنگاه‬‫فرزند‬‫راست‬،‫آن‬‫در‬2i+1‫است‬.
10
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫دودویی‬ ‫درخت‬ ‫سازی‬‫پیاده‬
‌‫یك‌درخت‌را‌می‌توان‌به‌کمك‌آرایه‬‫یا‌لیست‌پیوندی‌نمایش‌داد‬.
‫با‬ ‫سازی‬‫پیاده‬‫آرایه‬
‌‫گره‬i‌‫ام‌با‌توجه‌به‌درخت‌دودویی‌کامل‌شماره‌گذاری‬‌‌،‫شده‬‌‫در‌خانه‬i‫ام‌در‌آرایه‌ذخیره‌می‌شود‬‌‌.
11
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
‌‫پیاده‌سازی‌درخت‌اریب‌با‌آرایه‬:
12
3115731
5040302010
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫لیست‬ ‫با‬ ‫سازی‬‫پیاده‬‫پیوندی‬
‫هر‬‫گره‬‫در‬‫درخت‬‫دودویی‬‫شامل‬‫سه‬‫قسمت‬"،‫داده‬‫اشاره‬‫گر‬‫به‬‫فرزند‬‫چپ‬‫و‬‫اشاره‬‫گر‬‫به‬‫فرزند‬‫راست‬"‫می‬‫باشد‬.
‫تعریف‬‫یك‬‫گره‬‫درخت‬‫دودویی‬‫در‬‫زبان‬c:
struct node{
int data;
struct node* left;
struct node* right;
};
13
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
14
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫دودویی‬ ‫درخت‬ ‫پیمایش‬
15
‫پیمایش‬‌،‫درخت‬‫یعنی‬‫حرکت‬‫روی‬‫یالهای‬‫درخت‬‫و‬‫مالقات‬‫همه‬‫گره‬‫های‬‫آن‬‫دقیقا‬‫یکبار‬.
‫روشهای‬‫معمول‬‫پیمایش‬:
1)‫پیشوندی‬(VLR)(‫ریشه‬‫ـ‬‫چپ‬‫ـ‬‫راست‬)(preorder)
2)‫میانوندی‬(LVR)(‫چپ‬‫ـ‬‫ریشه‬‫ـ‬‫راست‬)(inorder)
3)‫پسوندی‬(LRV)(‫چپ‬‫ـ‬‫راست‬‫ـ‬‫ریشه‬)(postorder)
‫در‬‫پیمایش‬‫پیشوندی‬،‫ابتدا‬‫ریشه‬‫مالقات‬‫می‬‫شود‬.‫سپس‬‫زیر‬‫درخت‬‫سمت‬‫چپ‬‫به‬‫روش‬‫پیشوندی‬‫پیمایش‬‫می‬‫شود‬.‫در‬‫نهایت‬‫زیر‬
‫درخت‬‫سمت‬‫راست‬‫به‬‫روش‬‫پیشوندی‬‫پیمایش‬‫می‬‫شود‬.
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
Preorder : J E A H T M Y
Inorder : A E H J M T Y
Postorder : A H E M Y T J
16
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
Preorder : Y T W Z
Inorder : T W Y Z
Postorder : W T Z Y
17
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
Preorder : S R Y T W Z
Inorder : R S T W Y Z
Postorder : R W T Z Y S
18
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
Preorder : P F B H G S R Y T W Z
Inorder : B F G H P R S T W Y Z
Postorder : B G H F R W T Z Y S P
19
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
Preorder : 8 5 3 4 2 6 1 9
Inorder : 3 4 5 8 6 2 1 9
Postorder : 4 3 5 6 9 1 2 8
20
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
21
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
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
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫و‬ ‫پیشوندی‬ ‫های‬ ‫پیمایش‬ ‫داشتن‬ ‫با‬ ‫دودویی‬ ‫درخت‬ ‫رسم‬‫میانوندی‬
‫رسم‬‫درخت‬‫دودویی‬‫با‬‫داشتن‬‫دو‬‫پیمایش‬‫زیر‬:
Preorder : a b d f c e g
Inorder : d f b a e g c
23
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫فرزندی‬ ‫تک‬ ‫های‬ ‫گره‬ ‫کردن‬ ‫مشخص‬
‫می‬‫توان‬‫به‬‫کمك‬‫دو‬‫پیمایش‬preorder‫و‬postorder‫یك‬‫درخت‬،‫دودویی‬‫گره‬‫های‬‫تك‬‫فرزندی‬‫را‬‫مشخص‬‫کرد‬.
‫برای‬‫این‬‫کار‬‫در‬‫پیمایش‬Preorder‫از‬‫چپ‬‫به‬‫راست‬‫حرکت‬‫کرده‬‫و‬‫زوج‬‫پشت‬‫سرهمی‬‫که‬‫معکوس‬‫آن‬‫در‬‫پیمایش‬postorder
‫باشد‬‫را‬‫پیدا‬‫می‬‫کنیم‬.‫اولین‬‫گره‬‫در‬‫این‬‫زوج‬،‫ها‬‫گره‬‫های‬‫تك‬‫فرزندی‬‫می‬‫باشند‬.
‫مثال‬:
Preorder : 8 5 3 4 2 6 1 9
Postorder : 4 3 5 6 9 1 2 8
(53) , (34) ‫و‬ (19) .
24
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
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
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫پیمایش‬‫ترتیب‬ ‫به‬ ‫درخت‬‫سطح‬(Level Order)
‫گره‬‫ها‬‫را‬‫به‬‫ترتیب‬‫سطح‬‫از‬‫باال‬‫به‬‫پایین‬‫و‬‫در‬‫هر‬‫سطح‬‫از‬‫چپ‬‫به‬‫راست‬‫مالقات‬‫می‬‫کنیم‬.
‫در‬‫پیمایش‬level oder‫ا‬‫ز‬‫صف‬‫استفاده‬‫می‬‫شود‬.
‫پیمایش‬‫های‬،‫میانوندی‬‫پیشوندی‬‫و‬،‫پسوندی‬‫به‬‫پشته‬‫نیاز‬‫دارند‬.
26
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫درخت‬‫عبارت‬
‌‫درخت‌عبارت‌از‬‌‫کاربردهای‬‌‫‌های‌ریاضی‌به‌کار‌می‬‫ت‬‫مهم‌درخت‌دودویی‌است‌که‌برای‌عبار‬‫رود‬.
‌‫پیمایش‬inorder‌‌‫‌‌نگارش‬،‫یك‌درخت‌عبارت‬infix‫‌را‌تولید‌می‌کند‬‫ن‬‫آ‬‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌.A-(C/5*2)+(D*5%4)
‌‫پیمایش‬preorder‌‌‫‌‌نگارش‬،‫یك‌درخت‌عبارت‬prefix‫‌را‌تولید‌می‌کند‬‫ن‬‫آ‬.
‌‫پیمایش‬postorder‌‌‫‌‌نگارش‬،‫یك‌درخت‌عبارت‬postfix‫‌را‌تولید‌می‌کند‬‫ن‬‫آ‬.
27
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫های‬ ‫درخت‬ ‫تعداد‬‫با‬ ‫توان‬ ‫می‬ ‫که‬ ‫دودویی‬n‫ساخت‬ ‫گره‬
‫فرض‬‫‌کنیم‬‫ی‬‫م‬‫هر‬‫یك‬‫از‬‫گره‬‫ها‬‫را‬‫به‬‫روش‬inorder‫از‬1‫تا‬n‫شماره‬‫گذاری‬‫کرده‬‫ایم‬.
‫اگر‬‫گره‬‫شماره‬i‫ریشه‬،‫باشد‬‫در‬‫آن‬‫صورت‬i-1‫گره‬‫در‬‫زیر‬‫درخت‬‫چپ‬‫ریشه‬‫و‬n-i‫گره‬‫در‬‫زیر‬‫درخت‬‫راست‬‫ریشه‬‫قرار‬‫دارند‬.
1 2 3 …………………i-1 i i+1 ……………………. n
28








n
n
n
bn
2
1
1
1,1 10
1
1

 


bb
bbb in
n
i
in
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
‫تعداد‬‫درخت‬‫های‬‫دودویی‬‫متفاوت‬‫که‬‫با‬3‫گره‬‫‌توان‬‫ی‬‫م‬‫ساخت‬‫را‬‫مشخص‬‫نمایید‬.
‫پاسخ‬:
‫یکی‬‫را‬‫ریشه‬‫قرار‬‫داده‬‫و‬‫حالت‬‫های‬‫زیر‬‫را‬‫ایجاد‬‫می‬‫کنیم‬:
‫الف‬-‫هر‬‫دو‬‫گره‬‫در‬‫راست‬‫ریشه‬
‫ب‬-‫یك‬‫گره‬‫در‬‫چپ‬‫ریشه‬‫و‬‫یك‬‫گره‬‫در‬‫راست‬‫ریشه‬
‫ج‬-‫هر‬‫دو‬‫گره‬‫در‬‫چپ‬‫ریشه‬
‫روش‬‫دوم‬:
29
5
4
45
4
!3!3
!3456
4
!3!3
!6
4
3
6











21101102  bbbbb ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
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
‫ها‬ ‫داده‬‫ساختمان‬
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
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫درخت‬‫کلی‬(‫عمومی‬)
‫با‬‫فرض‬‫اینکه‬‫یك‬‫گره‬‫دارای‬‫یك‬‫فرزند‬،‫باشد‬‫آنگاه‬‫این‬‫فرزند‬‫در‬‫یك‬‫درخت‬‫دودویی‬‫با‬‫عنوان‬‫بچه‬‫چپ‬‫یا‬‫راست‬‫از‬‫هم‬‫متم‬‫ایز‬
،‫‌شوند‬‫ی‬‫م‬‫اما‬‫در‬‫یك‬‫درخت‬‫کلی‬‫تفاوتی‬‫بین‬‫آنها‬‫وجود‬‫ندارد‬.
‫برای‬‫پیاده‬‫سازی‬‫درخت‬‫های‬،‫کلی‬‫آنها‬‫را‬‫به‬‫صورت‬‫یك‬‫درخت‬‫دودویی‬‫در‬‫می‬‫آوریم‬‫که‬‫به‬‫آن‬"‫درخت‬‫دودویی‬‫معادل‬"‫با‬‫درخت‬
‫اصلی‬‫می‬‫گوییم‬.
32
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫معادل‬ ‫دودویی‬ ‫درخت‬ ‫به‬ ‫درخت‬ ‫یک‬ ‫تبدیل‬ ‫مراحل‬
1-‫در‬‫هر‬‫سطح‬‫کلیه‬‫‌های‬‫ه‬‫گر‬‫کنار‬‫هم‬(‫فرزندان‬‫یك‬‫پدر‬)‫را‬‫به‬‫یکدیگر‬‫متصل‬‫‌کنیم‬‫ی‬‫م‬.
2-‫کلیه‬‫اتصاالت‬‫‌ها‬‫ه‬‫گر‬‫به‬‫گره‬،‫پدر‬‫بجز‬‫اتصال‬‫سمت‬‫‌ترین‬‫پ‬‫چ‬‫فرزند‬‫را‬‫قطع‬‫‌کنیم‬‫ی‬‫م‬.
‫اولین‬‫فرزند‬‫هر‬‫گره‬‫در‬‫درخت‬،‫اصلی‬‫فرزند‬‫چپ‬‫آن‬‫گره‬‫در‬‫درخت‬‫دودویی‬‫معادل‬‫است‬‫و‬‫برادر‬‫سمت‬‫راست‬‫هر‬‫گره‬‫در‬
‫درخت‬،‫اصلی‬‫فرزند‬‫راست‬،‫آن‬‫در‬‫درخت‬‫معادل‬‫است‬.
33
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫جنگل‬(Forest)
34
‌‫جنگل‌شامل‬n‫درخت‌مجزا‌است‬‌.(n>=0)
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫دودویی‬ ‫درخت‬ ‫به‬ ‫جنگل‬ ‫تبدیل‬
35
‫مراحل‬‫تبدیل‬:
1-‫هر‬‫درخت‬‫جنگل‬‫را‬‫به‬‫یك‬‫درخت‬‫دودویی‬‫تبدیل‬‫‌کنیم‬‫ی‬‫م‬.
2-‫درخت‬‫های‬‫دودویی‬‫را‬‫از‬‫طریق‬‫فرزند‬‫راست‬‫‌های‬‫ه‬‫گر‬،‫ریشه‬‫به‬‫هم‬‫متصل‬‌‫ی‬‫م‬‫کنیم‬.
‫در‬‫درخت‬‫دودویی‬‫حاصل‬‫از‬،‫جنگل‬‫تعداد‬‫برگ‬،‫ها‬‫برابر‬‫تعداد‬‫درخت‬‫هایی‬‫است‬‫که‬‫جنگل‬‫را‬‫تشکیل‬‫داده‬‫اند‬.
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫یافته‬ ‫گسترش‬ ‫دودویی‬ ‫درخت‬(2-Tree)
‫درخت‬‫دودویی‬‫که‬‫در‬‫آن‬‫هر‬‫گره‬0‫یا‬2‫فرزند‬‫دارد‬.
‫گره‬‫هایی‬‫که‬‫فرزند‬‫ندارند‬‫را‬‫خارجی‬‫می‬‫گویند‬.
‫‌هایی‬‫ه‬‫گر‬‫که‬2‫فرزند‬‫دارند‬‫را‬‫داخلی‬‫می‬‫گویند‬.
‫تعداد‬‫‌های‬‫ه‬‫گر‬‫داخلی‬‫را‬‫با‬I‫نشان‬‫می‬‫دهیم‬.
‫تعداد‬‫‌های‬‫ه‬‫گر‬‫خارجی‬‫را‬‫با‬E‫نشان‬‫می‬‫دهیم‬.
‫مجموع‬‫تمام‬‫طول‬‫ها‬‫از‬‫ریشه‬‫تا‬‫هر‬‫گره‬‫داخلی‬‫را‬‫طول‬‫مسیر‬‫داخلی‬LI‫می‬‫نامیم‬.
‫مجموع‬‫تمام‬‫طول‬‫ها‬‫از‬‫ریشه‬‫تا‬‫هر‬‫گره‬‫خارجی‬‫را‬‫طول‬‫مسیر‬‫خارجی‬LE‫می‬‫نامیم‬.
36
5221 EL
I2LL IE 
3
2


E
I
110 IL
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‌‫پیاده‌سازی‬
‌‫چند‌الگوریتم‬
‌‫به‌زبان‬c
37
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫ایجاد‬‫نود‬
‌‫ساختار‌گره‌یك‌درخت‌دودویی‬‌‌:
struct node{ int data; struct node* left; struct node* right; };
‫تابع‬newnode‫استفاده‬‫شده‬‫در‬‫تمام‬‫پیاده‬‫سازی‬‫ها‬:
struct node* newnode(int item){
struct node* node = (struct node*) malloc(sizeof(struct node));
node ->data = item;
node ->left = NULL;
node ->right = NULL;
return(node);
}
38
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫شمارش‌تعداد‌گره‌ها‬
unsigned int count (struct node* root)
{
if (root == NULL)
return (0);
return (1 + count ( root->left ) + count ( root->right ) );
}
39
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫بودن‬ ‫برگ‬ ‫تشخیص‬
bool isleaf (struct node *n)
{
if (n== NULL)
return false;
if ((n ->left == NULL) && (n ->right == NULL) )
return true;
return false;
}
40
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫درخت‬ ‫ساختن‬
int main(void) {
struct node* nr = NULL;
struct node* root = newnode (2);
root ->left = newnode (7);
root -> right = newnode (5);
root -> left -> right = newnode (6);
root -> left -> right -> left = newnode (1);
root -> right -> right = newnode (9);
}
41
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫تشخیص‬‫دودویی‬ ‫درخت‬ ‫بودن‬ ‫کامل‬
bool f(struct Node* root, unsigned int i , unsigned int n)
{
if (root == NULL)
return (true);
if (i >= n)
return (false);
return( f(root->left, 2*i , n) && f (root->right , 2*i + 1 , n) );
}
42
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫فرزندی‬ ‫تک‬ ‫های‬ ‫گره‬ ‫حذف‬
‫فرزندی‬ ‫تک‬ ‫های‬ ‫گره‬ ‫حذف‬
struct node* remove (struct node* root){
if (root==NULL) return NULL;
root->left = remove (root->left);
root->right = remove (root->right);
if ((root->left==NULL) && (root->right==NULL) ) return root;
if (root->left==NULL)
{ struct node* n = root->right; free(root); return n; }
if (root->right==NULL)
{ struct node* n = root->left; free(root); return n; }
return root;
}
43
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫پیمایش‬levelorder
void LevelOrder( struct node* root ){
int rear, front;
struct node ** queue = createQueue( &front , &rear );
struct node * t = root;
while(t) {
cout << t ->data ;
if (t ->left ) enQueue( queue, &rear, t -> left );
if (t ->right ) enQueue (queue, &rear, t -> right );
t = deQueue (queue, &front );
}
}
44
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
struct node** createQueue(int *front , int *rear) {
struct node ** queue = (struct node **) malloc (sizeof(struct node*) * MAX);
*front = *rear = 0;
return queue;
}
void enQueue(struct node **queue, int *rear, struct node *newnode) {
queue[*rear] = newnode;
(*rear)++;
}
struct node * deQueue(struct node **queue, int *front) {
(*front)++;
return queue[*front - 1];
} 45
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫تمرین‬
‫عملکرد‌تابع‌زیر‌چیست؟‬
int sum ( node *root ){
int s = 0;
if ( root != NULL ) {
if ( isLeaf (root ->left ) ) s = s + root ->left ->data;
else s = s+ sum (root ->left);
s = s + sum (root -> right);
}
return s;
}
46
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫دودویی‬ ‫جستجوی‬ ‫درخت‬
47
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫دودویی‬ ‫جستجوی‬ ‫درخت‬(BST)
‫درختی‬‫را‬‫جستجوی‬‫دودویی‬((Binary Search Tree‫می‬‫نامند‬‫که‬:
1-‫عناصر‬‫زیر‬‫درخت‬،‫چپ‬‫کوچك‬‫تر‬‫از‬‫ریشه‬‫باشند‬.
2-‫عناصر‬‫زیر‬‫درخت‬،‫راست‬‫‌تر‬‫گ‬‫بزر‬‫از‬‫ریشه‬‫باشند‬.
3-‫زیر‬‫درختان‬‫چپ‬‫و‬‫راست‬،‫درختان‬‫جستجوی‬‫دودویی‬‫‌باشند‬.
4-‫گره‬‫با‬‫عنصر‬‫تکراری‬‫نداشته‬‫باشد‬.
48
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫ارتفاع‬BST
‫ارتفاع‬‫درخت‬‫جستجوی‬‫دودویی‬‫به‬‫طور‬‫متوسط‬‫برابر‬lgn‫و‬‫در‬‫بدترین‬‫حالت‬‫برابر‬n‫می‬‫باشد‬.
49
nhn lg
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫ساخت‬BST
‌‫به‌چند‌حالت‌می‌توان‌با‌وارد‌کردن‌مقادیر‬3,2,1‌‫‌دلخواه‌در‌یك‬‫به‌هر‌ترتیب‬BST‌‫تهی،‌یك‬BST‌‫با‌سه‌گره‌ساخت؟‬
‫پاسخ‬:
‫ترتیب‬‫های‬‫ممکن‬‫برای‬‫ورود‬‫سه‬‫عدد‬:
123 , 132 , 321 , 312 , 231 , 213
‌‫ترتیب‬213‫و‬231‫منجر‌به‌یك‌درخت‌می‌شوند‬‌.‌‫بنابراین‬5‫درخت‌متمایز‌می‌توان‌ایجاد‌کرد‬‌‌.
‌‫البته‬‌‫می‌توان‌با‌قرار‌دادن‌مقدار‬3‌‫در‌رابطه‬‌‫به‬‌‫جواب‬5‫رسید‬‌‌.
50
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫در‬ ‫عنصر‬ ‫یک‬ ‫جستجوی‬BST
‫مقدار‬‫کلید‬‫عنصر‬‫مورد‬‫نظر‬‫با‬‫ریشه‬‫مقایسه‬‫‌شود‬‫ی‬‫م‬:
1-‫اگر‬‫برابر‬‫باشد‬‫به‬‫نتیجه‬‫‌ایم‬‫ه‬‫رسید‬.
2-‫اگر‬‫کمتر‬‫از‬‫مقدار‬‫ریشه‬،‫باشد‬‫زیر‬‫درخت‬‫چپ‬‫را‬‫به‬‫صورت‬‫بازگشتی‬‫جستجو‬‫می‬‫نماییم‬.
3-‫اگر‬‫بزرگتر‬‫از‬‫مقدار‬‫ریشه‬،‫باشد‬‫زیر‬‫درخت‬‫راست‬‫را‬‫به‬‫صورت‬‫بازگشتی‬‫جستجو‬‫می‬‫نماییم‬.
51
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
‫مثال‬‌:‫‌کنید‬‫تعداد‌مقایسه‌برای‌پیدا‌کردن‌هر‌یك‌از‌کلیدهای‌درخت‌زیر‌را‌تعیین‬.
52
18
24
212
32
36
310
314
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
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
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫دنباله‬‫جستجو‬
‫در‬‫یك‬BST‫یك‬"‫دنباله‬‫جستجوی‬‫کلید‬x"،‫دنباله‬‫ای‬‫از‬‫برچسب‬‫های‬‫گره‬‫های‬‫آن‬‫درخت‬‫است‬‫که‬‫در‬‫یافتن‬‫موفق‬(‫یا‬‫ناموفق‬)x
‫مالقات‬‫می‬‫شوند‬.
‫مثال‬:‫دنباله‬‫جستجو‬45‫برابر‬‫است‬‫با‬:< 60 , 25 , 50 , 30 , 45 >
54
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫به‬ ‫عنصر‬ ‫یک‬ ‫درج‬BST
‫کلید‬‫مورد‬‫نظر‬‫ابتدا‬‫با‬‫ریشه‬‫مقایسه‬‫شده‬‫و‬‫در‬‫صورت‬‫کوچکتر‬،‫بودن‬‫به‬‫زیر‬‫درخت‬‫چپ‬‫و‬‫در‬‫صورت‬‫بزرگتر‬‫بودن‬‫به‬‫زی‬‫ر‬‫درخت‬‫راست‬
‫اضافه‬‫می‬‫شود‬.
‫مثال‬:‫اضافه‬‫کردن‬45:
‌‫درج‬‌‫در‬BST‌‫با‬n‌‫گره‌و‬‌‫به‌ارتفاع‬h‫در‌زمان‬O(h)‌‫انجام‬‫‌گیرد‬‫ی‬‫م‬.
55
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
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
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مرتب‬‫سازی‬
‫با‬‫ایجاد‬‫یك‬‫درخت‬‫جستجوی‬‫دودویی‬‫با‬n‫عدد‬‫و‬‫سپس‬‫پیمایش‬inorder،‫درخت‬‫می‬‫توان‬‫یك‬‫لیست‬‫مرتب‬‫شده‬‫از‬‫اعداد‬‫را‬
‫بدست‬‫آورد‬.‫به‬‫این‬‫روش‬‫مرتب‬،‫سازی‬Tree Sort‫می‬‫گویند‬.
inorder : 20 , 25 , 30 , 45 , 50 , 60 , 65 , 70
57
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫از‬ ‫گره‬ ‫یک‬ ‫حذف‬BST
‫پس‬‫از‬‫یافتن‬‫گره‬‫مورد‬‫نظر‬‫برای‬‫حذف‬،‫یکی‬‫از‬‫سه‬‫حالت‬‫زیر‬‫ممکن‬‫است‬‫رخ‬‫دهد‬:
1-‫اگر‬‫گره‬‫فاقد‬‫فرزند‬،‫باشد‬‫به‬‫سادگی‬‫حذف‬‫شده‬‫و‬‫نیازی‬‫به‬‫تنظیم‬‫درخت‬‫‌باشد‬‫ی‬‫نم‬.
2-‫اگر‬‫گره‬‫فقط‬‫دارای‬‫یك‬‫فرزند‬،‫باشد‬‫فرزند‬‫آن‬‫به‬‫طرف‬‫باال‬‫در‬‫درخت‬‫منتقل‬‫‌شود‬‫ی‬‫م‬.
3-‫اگر‬‫گره‬‫دارای‬‫دو‬‫فرزند‬،‫باشد‬‫گره‬‫بعدی‬‫یا‬‫قبلی‬‫آن‬‫در‬‫پیمایش‬inorder‫جای‬‫آن‬‫را‬‫‌گیرد‬‫ی‬‫م‬.
(‫به‬‫عبارتی‬‫عنصر‬‫حذف‬،‫شده‬‫با‬‫مقدار‬‫‌ترین‬‫گ‬‫بزر‬‫عنصر‬‫زیر‬‫درخت‬‫چپ‬‫یا‬‫کوچکترین‬‫عنصر‬‫زیر‬‫درخت‬‫راست‬‫جایگزین‬‫‌شود‬‫ی‬‫م‬.)
58
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫مثال‬
•‌‫حذف‌گره‬‌‫با‌داده‬25‌:
59
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
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
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫هیپ‬ ‫درخت‬
61
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫هرم‬(Heap)
‫دو‬‫نوع‬Heap‫دودویی‬‫وجود‬‫دارد‬:
1-Max-Heap:
‫یك‬‫درخت‬‫دودویی‬‫کامل‬‫که‬‫مقدار‬‫کلید‬‫هر‬‫گره‬‫آن‬‫بزرگتر‬‫یا‬‫مساوی‬‫مقدار‬‫کلیدهای‬‫فرزندانش‬‫باشد‬.
‫ریشه‬:‫بزرگترین‬‫کلید‬.
62
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫هرم‬((Heap
2-Min-Heap:
‫یك‬‫درخت‬‫دودویی‬‫کامل‬‫که‬‫مقدار‬‫کلید‬‫هر‬‫گره‬‫آن‬‫کوچکتر‬‫یا‬‫مساوی‬‫مقدار‬‫کلیدهای‬‫فرزندانش‬‫باشد‬.
‫ریشه‬Minheap:‫کوچکترین‬‫کلید‬.
63
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫نمایش‬heap‫آرایه‬ ‫با‬
‫برای‬‫هر‬‫عنصر‬v[i]:
‫فرزند‬‫چپ‬:v[2i+1]‫فرزند‬‫راست‬:v[2i+2]‫پدر‬:
64
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫در‬ ‫درج‬Heap
‫درج‬‫در‬‫سطحی‬‫که‬‫هنوز‬‫به‬‫طور‬‫کامل‬‫پر‬‫نشده‬(‫در‬‫چپ‬‫‌ترین‬‫جای‬‫خالی‬)
‫سپس‬‫عمل‬ReHeap‫صورت‬‫‌پذیرد‬‫ی‬‫م‬،(‫یعنی‬‫گره‬‫در‬‫‌ترین‬‫ن‬‫پایی‬‫سطح‬‫تا‬‫حد‬‫امکان‬‫با‬‫گره‬‫پدرش‬‫جا‬‫به‬‫جا‬‫‌شود‬‫ی‬‫م‬.)
‫مثال‬:‫درج‬5:
65
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
Heaps 66
19
4222127
23
45
35
42
‫درج‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
Heaps 67
19
4222142
23
45
35
27
‫درج‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
Heaps 68
19
4222135
23
45
42
27
‫درج‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫هیپ‬ ‫درخت‬ ‫ساخت‬
69
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫از‬ ‫حذف‬Heap
‫ریشه‬‫حذف‬‫شده‬‫و‬‫سمت‬‫‌ترین‬‫ت‬‫راس‬‫عنصر‬‫موجود‬‫در‬‫‌ترین‬‫ن‬‫پایی‬،‫سطح‬‫در‬‫ریشه‬‫قرار‬‫‌گیرد‬‫ی‬‫م‬‫و‬‫درخت‬ً‫ا‬‫مجدد‬‫تنظیم‬‫‌شو‬‫ی‬‫م‬‫د‬.
70
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
Heaps 71
19
4222127
36
45
35
3
‌‫مثال‬‌:‫حذف‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
Heaps 72
19
4222127
36
3
35
‌‫مثال‬‌:‫حذف‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
Heaps 73
19
4222127
3
36
35
‌‫مثال‬‌:‫حذف‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
Heaps 74
19
432127
22
23
35
‌‫مثال‬‌:‫حذف‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫اولویت‬ ‫صف‬(Priority Queue)
‫در‬‫صف‬‌‫ت‬‫اولوی‬‫برای‬‫هر‬‫داده‬‫اولویتی‬‫مشخص‬‫‌شود‬‫ی‬‫م‬.
‫عنصری‬‫که‬‫باالترین‬‫اولویت‬‫را‬،‫دارد‬‫حذف‬‫‌گردد‬‫ی‬‫م‬.
‫صف‬‫اولویت‬‫را‬‫‌توان‬‫ی‬‫م‬‫به‬‫اورژانس‬‫یك‬‫بیمارستان‬‫تشبیه‬‫کرد‬‫که‬‫هر‬‫بیمار‬‫با‬‫شدت‬‫بیماری‬‫بیشتر‬‫اولویت‬‫بیشتری‬‫برای‬‫رسیدگی‬‫دارد‬.
‫‌عامل‬‫م‬‫سیست‬‫کامپیوتر‬‫هم‬‫برای‬‫مدیریت‬‫‌ها‬‫ش‬‫پرداز‬‫از‬‫صف‬‫های‬‫اولویت‬‫استفاده‬‫‌کند‬‫ی‬‫م‬.
‫دو‬‫نوع‬‫صف‬‫اولویت‬‫وجود‬‫دارد‬:
1-‫صف‬‫اولویت‬‫ماکزیمم‬(max-priority queue)
2-‫صف‬‫اولویت‬‫مینیمم‬(min-priority queue)
75
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫اولویت‬ ‫صف‬ ‫سازی‬ ‫پیاده‬
1-‫با‬‫استفاده‬‫از‬‫آرایه‬‫نامرتب‬
‫‌ای‬‫ه‬‫داد‬‫که‬‫وارد‬‫صف‬،‫‌شود‬‫ی‬‫م‬‫مانند‬‫صف‬‫عادی‬‫در‬‫انتهای‬‫آن‬‫قرار‬‫‌گیرد‬‫ی‬‫م‬.
‫درج‬:O(1)‫حذف‬:O(n)
2-‫با‬‫استفاده‬‫از‬‫آرایه‬‫مرتب‬
‫‌ای‬‫ه‬‫داد‬‫که‬‫وارد‬‫صف‬،‫‌شود‬‫ی‬‫م‬‫بر‬‫اساس‬‫اولویت‬‫خود‬‫در‬‫محل‬‫مناسب‬‫قرار‬‫‌گیرد‬‫ی‬‫م‬.
‫درج‬:O(n)‫حذف‬:O(1)
3-‫با‬‫استفاده‬‫از‬‫آرایه‬‫نیمه‬‫مرتب‬heap))
‫درج‬:O(logn)‫حذف‬:O(logn)
‫پس‬‫روش‬‫درخت‬‫هیپ‬‫برای‬‫پیاده‬‫سازی‬‫صف‬‫اولویت‬‫کارآیی‬‫بسیار‬‫بهتری‬‫دارد‬.
76
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫صف‬‫اولویت‬(‫ادامه‬).
‫یك‬‫صف‬‫اولویت‬‫ماکزیمم‬‫اعمال‬‫زیر‬‫را‬‫پشتیبانی‬‫می‬‫کند‬:
‫یافتن‬‫یك‬‫عنصر‬‫در‬‫صف‬‫اولویت‬‫را‬‫نمی‬‫توان‬‫به‬‫صورت‬‫کارا‬‫انجام‬،‫داد‬‫چون‬‫یك‬‫عنصر‬‫خاص‬‫جای‬‫ثابتی‬‫ندارد‬‫و‬‫باید‬‫تمام‬‫ع‬‫ناصر‬
‫جستجو‬‫شوند‬.
77
MAXIMUM(S)‫بزرگترین‬ ‫با‬ ‫عنصر‬ ‫برگرداندن‬‫اولویت‬O(1)
INSERT(S,x)‫عنصر‬ ‫درج‬xO(lgn)
EXTRACT-MAX(S)‫بزرگترین‬ ‫با‬ ‫عنصر‬ ‫برگرداندن‬ ‫و‬ ‫حذف‬‫او‬‫لویت‬O(lgn)
INCREASE-KEY(S,x,k)‫مقدار‬ ‫افزایش‬‫عنصر‬ ‫اولویت‬x‫جدید‬ ‫مقدار‬ ‫به‬kO(lgn)
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫حداقل‬ ‫هرم‬-‫حداکثر‬(Min-Max Heap)
78
‫یك‬‫درخت‬‫دودویی‬‫کامل‬‫است‬‫که‬‫اگر‬‫تهی‬‌،‫نباشد‬‫هر‬‫عنصر‬‫آن‬‫دارای‬‫فیلدی‬‫به‬‫نام‬‫کلید‬‫است‬.
‫سطوح‬‫متناوب‬‫این‬،‫درخت‬‫بترتیب‬‫سطوح‬min‫و‬‫سطوح‬max‫هستند‬.‫ریشه‬‫در‬‫سطح‬min‫قرار‬‫دارد‬.
‌‫ه‬‫گر‬min:‫‌ای‬‫ه‬‫گر‬‫در‬‫سطح‬‌،‫حداقل‬‫که‬‫عنصر‬‫واقع‬‫در‬‫آن‬‫دارای‬‫کمترین‬‫کلید‬‫در‬‫میان‬‫همه‬‫عناصر‬‫واقع‬‫در‬‫زیر‬‫درخت‬‫با‬‫ریشه‬‫این‬‫گره‬‫است‬.
‌‫ه‬‫گر‬max:‫‌ای‬‫ه‬‫گر‬‫در‬‫سطح‬‌،‫حداکثر‬‫که‬‫عنصر‬‫واقع‬‫در‬‫آن‬‫دارای‬‫بیشترین‬‫کلید‬‫در‬‫میان‬‫همه‬‫عناصر‬‫واقع‬‫در‬‫زیر‬‫درخت‬‫با‬‫ریشه‬‫این‬‫گره‬‫است‬.
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫حداقل‬ ‫هرم‬ ‫در‬ ‫درج‬-‫حداکثر‬
‌‫درج‌گره‬80‌‌:
79
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫حداقل‬ ‫هرم‬ ‫در‬ ‫درج‬-‫حداکثر‬
‌‫درج‌گره‬5‌:
80
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫حذف‬
•‫حذف‬7:
81
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
Deap
‫یك‬‫درخت‬‫دودویی‬‫کامل‬‫است‬‫که‬‫یا‬‫تهی‬‫است‬‫و‬‫یا‬‫دارای‬‫خواص‬‫زیر‬‫است‬:
1-‫در‬‫ریشه‬‫عنصری‬‫وجود‬‫ندارد‬.
2-‫زیر‬‫درخت‬‫سمت‬‫چپ‬‫یك‬minheap‫است‬.
3-‫زیر‬‫درخت‬‫سمت‬‫راست‬‫یك‬maxheap‫است‬.
4-‫کلید‬‫گره‬‫زیر‬‫درخت‬،‫چپ‬‫کوچکتر‬‫یا‬‫مساوی‬‫کلید‬
‫گره‬‫متناظر‬‫در‬‫زیر‬‫درخت‬‫راست‬‫می‬‫باشد‬.
•‫ارتفاع‬‌‌:O(lgn)
•‌‫حذف‬‌‫یا‌درج‬‌:O(lgn)
•‌‫یك‬deap‫را‌می‌توان‌در‌یك‌آرایه‌ذخیره‌کرد‬‌.‌‫در‌خانه‌اول‬‌‫چیزی‬‌‫قرار‌نمی‌دهیم‌و‌تعداد‌عناصر‌آرایه‌برابر‬n-1‫می‌باشد‬.
82
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫در‬ ‫متناظر‬ ‫گره‬deap
‫اگر‬i‫گرهی‬‫در‬minheap،‫باشد‬‫آنگاه‬‫گره‬‫متناظر‬‫با‬‫آن‬‫در‬maxheap،‫است‬.
‌‫البته‌اگر‬j‌‫از‬n‌‫‌‌آنگاه‌گره‌متناظر‌با‌گره‬،‫بیشتر‌شود‬i‌‫‌گره‬،j/2‫خواهد‌بود‬‌‌.
83
  1log2
2 

i
ij
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‫در‬ ‫درج‬Deap
‌‫درج‌عنصری‌با‌کلید‬4‌‌:
84
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
Treap
‫از‬‫ترکیب‬‫ویژگی‬‫های‬BST‫و‬HEAP‫ساخته‬‫می‬‫شود‬.
‫هر‬‫گره‬‫دارای‬‫کلید‬‫و‬‫اولویت‬‫است‬.
‫کلیدها‬‫از‬‫ویژگی‬BST‫پیروی‬‫می‬‫کنند‬.
‫اولویت‬‫ها‬‫از‬‫ویژگی‬MinHeap‫پیروی‬‫می‬‫کنند‬.
‫جستجو‬:‫از‬‫مرتبه‬logn
85
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
‌‫درج‌در‬treap
86
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫ها‬ ‫داده‬‫ساختمان‬
faradars.org/fvds9402
87
‫فرادرس‬ ‫در‬ ‫شده‬ ‫مطرح‬ ‫نکات‬ ‫مبنای‬ ‫بر‬ ‫ها‬ ‫اسالید‬ ‫این‬
«‫ها‬ ‫داده‬ ‫ساختمان‬ ‫های‬ ‫فرادرس‬ ‫مجموعه‬»
‫است‬ ‫شده‬ ‫تهیه‬.
‫به‬ ‫آموزش‬ ‫این‬ ‫مورد‬ ‫در‬ ‫بیشتر‬ ‫اطالعات‬ ‫کسب‬ ‫برای‬‫مراجعه‬ ‫زیر‬ ‫لینک‬‫نمایید‬.
faradars.org/fvds9402
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org

More Related Content

Similar to آموزش ساختمان داده ها - بخش ششم

آموزش ساختمان داده ها - بخش هفتم
آموزش ساختمان داده ها - بخش هفتمآموزش ساختمان داده ها - بخش هفتم
آموزش ساختمان داده ها - بخش هفتمfaradars
 
آموزش ساختمان داده ها - بخش سوم
آموزش ساختمان داده ها - بخش سومآموزش ساختمان داده ها - بخش سوم
آموزش ساختمان داده ها - بخش سومfaradars
 
آموزش ساختمان داده ها - بخش پنجم
آموزش ساختمان داده ها - بخش پنجمآموزش ساختمان داده ها - بخش پنجم
آموزش ساختمان داده ها - بخش پنجمfaradars
 
آموزش ساختمان داده ها - بخش هشتم
آموزش ساختمان داده ها - بخش هشتمآموزش ساختمان داده ها - بخش هشتم
آموزش ساختمان داده ها - بخش هشتمfaradars
 
آموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمآموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمfaradars
 
آموزش ساختمان داده ها - بخش دوم
آموزش ساختمان داده ها - بخش دومآموزش ساختمان داده ها - بخش دوم
آموزش ساختمان داده ها - بخش دومfaradars
 
آموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمآموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهمآموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهمfaradars
 
آموزش سیستم های عامل - بخش ششم
آموزش سیستم های عامل - بخش ششمآموزش سیستم های عامل - بخش ششم
آموزش سیستم های عامل - بخش ششمfaradars
 
آموزش ساختمان داده ها - بخش چهارم
آموزش ساختمان داده ها - بخش چهارمآموزش ساختمان داده ها - بخش چهارم
آموزش ساختمان داده ها - بخش چهارمfaradars
 
آموزش ساختمان داده ها - بخش نهم
آموزش ساختمان داده ها - بخش نهمآموزش ساختمان داده ها - بخش نهم
آموزش ساختمان داده ها - بخش نهمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمآموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمfaradars
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سومآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سومfaradars
 
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارمآموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارمfaradars
 
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سوم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سومآموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سوم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سومfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهمآموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهمfaradars
 
آموزش هوش مصنوعی - بخش پنجم
آموزش هوش مصنوعی - بخش پنجمآموزش هوش مصنوعی - بخش پنجم
آموزش هوش مصنوعی - بخش پنجمfaradars
 
تشخیص انجمن در مقیاس کلان داده
تشخیص انجمن در مقیاس کلان دادهتشخیص انجمن در مقیاس کلان داده
تشخیص انجمن در مقیاس کلان دادهNavid Sedighpour
 
آموزش مبانی و کاربردهای راهبرد تلفیق داده یا Data Fusion -بخش دوم
آموزش مبانی و کاربردهای راهبرد تلفیق داده یا Data Fusion -بخش دومآموزش مبانی و کاربردهای راهبرد تلفیق داده یا Data Fusion -بخش دوم
آموزش مبانی و کاربردهای راهبرد تلفیق داده یا Data Fusion -بخش دومfaradars
 
آموزش ساختمان داده ها - بخش اول
آموزش ساختمان داده ها - بخش اولآموزش ساختمان داده ها - بخش اول
آموزش ساختمان داده ها - بخش اولfaradars
 

Similar to آموزش ساختمان داده ها - بخش ششم (20)

آموزش ساختمان داده ها - بخش هفتم
آموزش ساختمان داده ها - بخش هفتمآموزش ساختمان داده ها - بخش هفتم
آموزش ساختمان داده ها - بخش هفتم
 
آموزش ساختمان داده ها - بخش سوم
آموزش ساختمان داده ها - بخش سومآموزش ساختمان داده ها - بخش سوم
آموزش ساختمان داده ها - بخش سوم
 
آموزش ساختمان داده ها - بخش پنجم
آموزش ساختمان داده ها - بخش پنجمآموزش ساختمان داده ها - بخش پنجم
آموزش ساختمان داده ها - بخش پنجم
 
آموزش ساختمان داده ها - بخش هشتم
آموزش ساختمان داده ها - بخش هشتمآموزش ساختمان داده ها - بخش هشتم
آموزش ساختمان داده ها - بخش هشتم
 
آموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمآموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکم
 
آموزش ساختمان داده ها - بخش دوم
آموزش ساختمان داده ها - بخش دومآموزش ساختمان داده ها - بخش دوم
آموزش ساختمان داده ها - بخش دوم
 
آموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمآموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکم
 
آموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهمآموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهم
 
آموزش سیستم های عامل - بخش ششم
آموزش سیستم های عامل - بخش ششمآموزش سیستم های عامل - بخش ششم
آموزش سیستم های عامل - بخش ششم
 
آموزش ساختمان داده ها - بخش چهارم
آموزش ساختمان داده ها - بخش چهارمآموزش ساختمان داده ها - بخش چهارم
آموزش ساختمان داده ها - بخش چهارم
 
آموزش ساختمان داده ها - بخش نهم
آموزش ساختمان داده ها - بخش نهمآموزش ساختمان داده ها - بخش نهم
آموزش ساختمان داده ها - بخش نهم
 
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمآموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سومآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سوم
 
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارمآموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
 
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سوم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سومآموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سوم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش سوم
 
آموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهمآموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهم
 
آموزش هوش مصنوعی - بخش پنجم
آموزش هوش مصنوعی - بخش پنجمآموزش هوش مصنوعی - بخش پنجم
آموزش هوش مصنوعی - بخش پنجم
 
تشخیص انجمن در مقیاس کلان داده
تشخیص انجمن در مقیاس کلان دادهتشخیص انجمن در مقیاس کلان داده
تشخیص انجمن در مقیاس کلان داده
 
آموزش مبانی و کاربردهای راهبرد تلفیق داده یا Data Fusion -بخش دوم
آموزش مبانی و کاربردهای راهبرد تلفیق داده یا Data Fusion -بخش دومآموزش مبانی و کاربردهای راهبرد تلفیق داده یا Data Fusion -بخش دوم
آموزش مبانی و کاربردهای راهبرد تلفیق داده یا Data Fusion -بخش دوم
 
آموزش ساختمان داده ها - بخش اول
آموزش ساختمان داده ها - بخش اولآموزش ساختمان داده ها - بخش اول
آموزش ساختمان داده ها - بخش اول
 

More from faradars

آموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCADآموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCADfaradars
 
آموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهمآموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهمfaradars
 
آموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجمآموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمآموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششمآموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجمآموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارمآموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومآموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دومآموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دومfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکمآموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکمfaradars
 
آموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سومآموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سومfaradars
 
آموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتمآموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتمfaradars
 
آموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دومآموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دومfaradars
 
آموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتمآموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتمfaradars
 
آموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششمآموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششمfaradars
 
آموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اولآموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اولfaradars
 
آموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجمآموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجمfaradars
 
آموزش ترمودینامیک ۲ بخش چهارم
آموزش ترمودینامیک ۲ بخش چهارمآموزش ترمودینامیک ۲ بخش چهارم
آموزش ترمودینامیک ۲ بخش چهارمfaradars
 
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...faradars
 
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...faradars
 

More from faradars (20)

آموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCADآموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCAD
 
آموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهمآموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهم
 
آموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجمآموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجم
 
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمآموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
 
آموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششمآموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششم
 
آموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجمآموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجم
 
آموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارمآموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارم
 
آموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومآموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سوم
 
آموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دومآموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دوم
 
آموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکمآموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکم
 
آموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سومآموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سوم
 
آموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتمآموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتم
 
آموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دومآموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دوم
 
آموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتمآموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتم
 
آموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششمآموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششم
 
آموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اولآموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اول
 
آموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجمآموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجم
 
آموزش ترمودینامیک ۲ بخش چهارم
آموزش ترمودینامیک ۲ بخش چهارمآموزش ترمودینامیک ۲ بخش چهارم
آموزش ترمودینامیک ۲ بخش چهارم
 
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
 
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
آموزش نرم افزار Comsol Multiphysics برای تحلیل مسائل مکانیک سیالات و جامدات ب...
 

آموزش ساختمان داده ها - بخش ششم