Upload
zilya
View
93
Download
0
Embed Size (px)
DESCRIPTION
بسم الله الرحمن الرحيم ساختمان دادهها. درخت. جلسه دهم و یازدهم 92/09/29. پیمایش درخت. 2. پیمایش یعنی ملاقات (visit) همه گرههای یک درخت بر اساس روشی خاص. در پیمایش میخواهیم به هر گره فقط یک بار دسترسی داشته باشیم. - PowerPoint PPT Presentation
Citation preview
بسم الله الرحمن الرحيم
ساختمان داده ها
درخت
جلسه دهم و یازدهم
92/09/29
پیمایش درخت
2درخت یازدهم، و دهم 92/10/05جلسه
پیم"ایش یع"نی مالق"ات(visit هم"ه گره ه"ای ی"ک درخت ب"ر )اساس روشی خاص.
ب"ار ی"ک فق"ط گ"ره ه"ر ب"ه می خ"واهیم پیم"ایش در دسترسی داشته باشیم.
( به ط"ور کلی پیم"ایش درخت"ان در دو ح"الت عمقیDFS )( انجام می شود. BFSو سطحی )
:برای پیمایش از نمادهای زیر استفاده می کنیم V مالقات :L فرزند چپ : Rفرزند راست :
:در مجموع چهار پیمایش را بررسی می کنیم پیمایشVLR : PreOrder پیمایشLVR : InOrder پیمایشLRV : PostOrder پیمایش سطحیLevelOrder
VLRپیمایش
3درخت یازدهم، و دهم 92/10/05جلسه
پیم"ایشpreorder مالق"ات درخت ریش"ه ابت"دا :ش"ده و س"پس زی"ر درخت س"مت چپ و پس از آن ه"ر پیم"ایش می ش"ود. راس"ت زی"ر درخت س"مت ن"یز در از زی"ر درخت"ان س"مت چپ و راس"ت ی"ک
صورت وجود به همین روش پیمایش می شوند.
VLR : ABDHJEKLCFMNGOP
LRVپیمایش
4درخت یازدهم، و دهم 92/10/05جلسه
پیم"ایش postorder ابت"دا زی"ر درخت س"مت چپ :و س"پس زی"ر درخت س"مت راس"ت پیم"ایش ش"ده و پس از آن ریش"ه مالق"ات می ش"ود. ه"ر ی"ک از زی"ر درخت"ان س"مت چپ و راس"ت ن"یز در ص"ورت
.وجود به همین روش پیمایش می شوند
LRV : POGNMFCLKEJHDBA
LVRپیمایش
5درخت یازدهم، و دهم 92/10/05جلسه
پیم"ایش inorder ابت"دا زی"ر درخت س"مت چپ :درخت ریش"ه آن از پس می ش"ود، پیم"ایش مالق"ات ش"ده و س"پس زی"ر درخت س"مت راس"ت پیم"ایش می ش"ود. ه"ر ی"ک از زی"ر درخت"ان س"مت همین ب"ه وج"ود ص"ورت در ن"یز راس"ت و چپ
روش پیمایش می شوند.
LVR : PGOCNFMALEKBJDH
پیمایش سطحی
6درخت یازدهم، و دهم 92/10/05جلسه
ب"ه چپ و س"طح ت"رتیب ب"ه درخت ه"ای گره راست مالقات می شوند.
LevelOrder : ABCDEFGHJKLMNOP
مثال
7درخت یازدهم، و دهم 92/10/05جلسه
انواع پیمایش را روی درخت زیرانجام دهید.
LVR: DCBFEAHNMIG
D F
M
B
A
I
E
G
H
N
C
LRV: DCFEBNMIHGA
VLR: ABCDEFGHIMN
LevelOrder : ABGCEHDFIMN
درخت عبارت محاسباتی
8درخت یازدهم، و دهم 92/10/05جلسه
ب"ه ص"ورت ه"ر عب"ارت محاس"باتی برای تش"کیل درخت زیر عمل می کنیم:
اول"ویت عملگره"ا اول"ویت برحس"ب را عب"ارت ابت"دا بندی می کنیم.
.ریشه درخت، کمترین اولویت را دارد ریش"ه زیردرخت"ان چپ و راس"ت ب"ه ت"رتیب کم اول"ویت
ترین عملگر در چپ و راست ریشه درخت است. .برگهای درخت عملوندها هستند
برای تب"دیل عب"ارات میانون"دی ب"ه پس"وندی ب"ا اس"تفاده ازپیم""ایش از محاس""باتی، درخت postOrderدرخت
استفاده می کنیم. برای تب"دیل عب"ارات میانون"دی ب"ه پیش"وندی ب"ا اس"تفاده از
درخت اس"تفاده preOrderدرخت محاس"باتی، از پیم"ایش می کنیم.
مثال
9درخت یازدهم، و دهم 92/10/05جلسه
a * b – c / d
a – b * c / d ^ (e – f)
*
–
b
/
ca d
*
–
^
/
da +
cbfe
a * b ^ c – d / (e + f)
–
/
*
a
cb
^
d –
fe
(BSTدرخت جستجوی دودویی )
10
درخت یازدهم، و دهم 92/10/05جلسه
یک درخت دودویی اس"ت ک"ه می توان"د تهی باش"د و اگ"رنباشد دارای خصوصیات زیر است:
هر عنصر دارای یک کلید منحصر به فرد است. ) کلیدتکراری نداریم(
)مقدار کلید های زیر درخت سمت چپ )در صورت وجودکمتر از کلید ریشه است.
)مقدار کلید های زیر درخت سمت راست ) در صورت وجودبیشتر از ریشه است.
زیر درخت های سمت چپ و سمت راست نیز درختان جستجوی دودویی هستند.
53
58
10
30
9215
86
67
42
مشخصات مهم درخت جستجوی دودویی
11
درخت یازدهم، و دهم 92/10/05جلسه
.هیچ عنصر تکراری در درخت وجود ندارد پیم"ایشinorder (LVR) درخت ه"ر BST ب"ه را عناص"ر
صورت مرتب شده صعودی نشان می دهد. با ش"روع از ریش"ه درخت و ح"رکت ب"ه س"مت چپ ت"ا
رس"یدن ب"ه گ"رهی ک"ه س"مت چپ آن گ"ره تهی اس"ت، ب"ه گ"رهی می رس"یم ک"ه مق"دار آن در درخت می"نیمم
است. با ش"روع از ریش"ه درخت و ح"رکت ب"ه س"مت راس"ت ت"ا
تهی گ"ره آن راس"ت س"مت ک"ه گ"رهی ب"ه رس"یدن در درخت آن مق"دار ک"ه گ"رهی می رس"یم ب"ه اس"ت،
ماکزیمم است.
جستجو در درخت جستجوی دودویی
12
درخت یازدهم، و دهم 92/10/05جلسه
جس"تجو می باش"د ک"ه از BSTمهم"ترین عم"ل در درخت ریش"ه آغ"از ش"ده و ح"داکثر ت"ا عم"ق درخت ادام"ه می یاب"د. ب"ه ص"ورت داخ"ل درخت جس"تجوی دودویی در جس"تجو
زیر انجام می شود: .اگر ریشه موجود نباشد جستجو ناموفق است ب"ه ص"ورت براب"ر باش"د جس"تجو ب"ا کلی"د ریش"ه اگ"ر کلی"د م"ورد جس"تجو
موفق آمیز خاتمه می یابد. باش"د ریش"ه از کوچک"تر جس"تجو م"ورد کلی"د اگ"ر ص"ورت این غ"یر در
جس"تجو در زی"ر درخت س"مت چپ و در غ"یر این ص"ورت در زی"ر درخت سمت راست به شیوه فوق ادامه می یابد.
ک"ه ص"ورتی در ب"ود خواه"د مقایس"ه ی"ک مقایس"ه، حداقل ب"ه مقایس"ه ح"داکثر باش"د. ریش"ه در م"ورد جس"تجو عنص"ر ب"ود در ص"ورتی ک"ه عنص"رمورد ان"دازه عم"ق درخت خواه"د
جستجو یکی از عناصر گره ها در پایین ترین سطح باشد. در ی"ک درخت جس"تجوی دودویی ب"اn گ"ره، ب"ه ط"ور متوس"ط
log2 n .مقایسه انجام می شود ی"ک درخت ب"ا BSTدر اریب n و ح"داکثر 1 گ"ره، ح"داقل n
مقایسه خواهیم داشت.
BSTکاربردهای
13
درخت یازدهم، و دهم 92/10/05جلسه
جستجو به دنبال داده ها حذف داده های تکراری از لیست ها( مرتب سازیsort لیست ها با پیمایش )inorder (LVR)
BSTدرج عنصر در
14
درخت یازدهم، و دهم 92/10/05جلسه
برای درج ی"ک عنص"ر ابت"دا، عم"ل جس"تجو ب"رای گ"ره م"ورد درج بای"د انج"ام ش"ود ت"ا مطمئن ش"ویم گ"ره م"ورد نظ"ر در
در BSTدرخت چ"ون باش"د، نداش"ته وج"ود BST عنص"ر پیش ح"الت دو وض"عیت، این در ن"دارد. وج"ود تک"راری
می آید: اگ"ر کلی"د م"ورد درج در درخت پی"دا ش"ود، در این ص"ورت
از لیس"ت ورودی ح"ذف می ش"ود. نیس"ت و قاب"ل درج )به دلیل تکراری بودن(
اگ"ر کلی"د م"ورد درج در درخت پی"دا نش"ود، در این ص"ورتب"ر حس"ب آنک"ه کوچک"تر ی"ا بزرگ"تر از مق"دار کلی"د آخ"رین گ"ره م"ورد جس"تجو اس"ت، ب"ه عن"وان فرزن"د س"مت چپ ی"ا
راست آن درج می شود.
دقت کنی"د ب"رای درج ه"ر گ"ره، مقایس"ه از ریش"ه آغ"از ش"ده بودن خود را حفظ کند. BSTو سعی داریم درخت، حالت
مثال
15
درخت یازدهم، و دهم 92/10/05جلسه
کلی"دهای زی"ر را از چپ ب"ه راس"ت در ی"ک درختجستجوی دودویی درج کنید.
30 , 86 , 67 , 53 , 10 , 58 , 92 , 42 , 15
30
53
15
92
5842
67
8610
BSTحذف عنصر از
16
درخت یازدهم، و دهم 92/10/05جلسه
بای"د ابت"دا عم"ل جس"تجو BSTبرای ح"ذف عنص"ر از درخت انجام گیرد. در این وضعیت دو حالت پیش می آید:
گره م"ورد نظ"ر ب"رای ح"ذف، در درخت وج"ود ن"دارد ک"هدر این صورت عملی انجام نمی شود.
گره م"ورد نظ"ر ب"رای ح"ذف از درخت وج"ود دارد ک"ه دراین حالت سه وضعیت بررسی می شود:
حذف گره برگ. 1.
حذف گرهی که یک فرزند دارد. 2.
حذف گرهی که دو فرزند دارد. 3.
Xحذف گره برگ
17
درخت یازدهم، و دهم 92/10/05جلسه
این ح"الت بس"یار س"اده اس"ت. اش"اره گر مناس"بی از گ"ره فرزن"د چپ باش"د، اش"اره گر x را تهی می ک"نیم. اگ"ر xپ"در
چپ پدر، وگرنه اشاره گر راست پدر را تهی می کنیم.
30
25
15 40
20
35
80
32 37
50 85
70
60
57 65
71
حذف 85
30
25
15 40
20
35
80
32 37
50
70
60
57 65
71
با یک فرزندXگره حذف
18
درخت یازدهم، و دهم 92/10/05جلسه
.گره حذف شده و فرزند جایگزین آن می شود
30
25
15 40
20
35
80
32 37
50 85
70
60
57 65
71
حذف 50
30
25
15 40
20
35
80
32 37
8570
60
57 65
71
با دو فرزندXگره حذف
19
درخت یازدهم، و دهم 92/10/05جلسه
به دو صورت ممکن است:ال"ف( گ"ره ح"ذف و بزرگ"ترین گ"ره زی"ر درخت س"مت چپ
جایگزین آن می شود.
30
25
15 40
20
35
80
32 37
50 85
70
60
57 65
71
حذف 40
30
25
15 37
20
35
80
32
50 85
70
60
57 65
71
با دو فرزندXگره حذف
20
درخت یازدهم، و دهم 92/10/05جلسه
راس"ت س"مت درخت زی"ر گ"ره کوچک"ترین و ح"ذف گ"ره ب( جایگزین آن می شود.
توج"ه کنی"د ک"ه ب"زرگ ت"رین گ"ره س"مت چپ و کوچ"ک ت"رین گ"رهسمت راست گره مورد نظر، فرزند ندارد یا یک فرزند دارد.
30
25
15 40
20
35
80
32 37
50 85
70
60
57 65
71
حذف 40
30
25
15 50
35
80
32 37
8570
60
57 65
71
20
HEAPهرم
21
درخت یازدهم، و دهم 92/10/05جلسه
•: Max Treeدرختی که مقدار کلید هر گره در آن،
بزرگترمساوی مقدار کلید فرزندانش )در صورت وجود( باشد.
•Min Treeدرختی که مقدار کلید هر گره در آن،
کوچکترمساوی مقدار کلید فرزندانش )در صورت وجود( باشد.
34 21
65
34
80
72 53
46
55
•Max Heap: Max که کاملیک درخت دودوئی
Tree.نیز باشد
•Min Heap: Min Tree که کاملیک درخت دودویی
نیز باشد.
67
45 73
32
82
استMinHeapدرخت
82
45 73
32
67
درخت کامل نیست
32
75 80
83
75
است MaxHeapدرخت
75
75 80
83
32
درخت کامل نیست
)برای مطالعه(HEAPکاربرد
22
درخت یازدهم، و دهم 92/10/05جلسه
محاسبه گره مینیمم و ماکزیمم درHeap درختminHeap :
مقایس"ه 1. ب"دون و دارد ق"رار ریش"ه در می"نیمم عنص"ر بدست می آید.
درخت 2. چ"ون و دارد وج"ود برگه"ا در م"اکزیمم عنص"ر برگه"ا تع"داد اس"ت مقایس"ات n+1/2⌋کام"ل تع"داد و ⌋
خواهد بود. 1⌊-n+1/2برای محاسبه عنصر ماکزیمم ⌋ درختmaxHeap :
عنص"ر م"اکزیمم در ریش"ه ق"رار دارد و ب"دون مقایس"ه 1.بدست می آید.
عنص"ر می"نیمم در برگه"ا وج"ود دارد و چ"ون درخت کام"ل 2.⌊ برگه"ا تع"داد ب"رای n+1/2اس"ت مقایس"ات تع"داد و ⌋
خواهد بود. 1⌊-n+1/2محاسبه عنصر ماکزیمم ⌋
در حافظهHEAPنمایش
23
درخت یازدهم، و دهم 92/10/05جلسه
نم"ایش و mintreeبرای maxtree درخت"ان لزوم"ا چ"ون ک"املی نیس"تند از نم"ایش پیون"دی اس"تفاده می ش"ود. چ"ون خواهن"د حافظ"ه اتالف آرای"ه از اس"تفاده ص"ورت در
داشت. برای نم"ایشmaxHeap و minHeap چ"ون درخت"ان ک"املی
هس"تند از آرای"ه اس"تفاده می ک"نیم ک"ه در این ح"الت اتالف حافظه نخواهیم داشت.
:مثال نحوه نمایش درخت مقابل در آرایه؟
32
75 80
83
75
MINHEAP و MAXHEAPدرج عنصر در
24
درخت یازدهم، و دهم 92/10/05جلسه
ابت"دا عنص"ر جدی"د ب"ه گ"ونه ای درج می ش"ود ک"هوی"ژگی کام"ل ب"ودن درخت حف"ظ ش"ود. )یع"نی در ب"ه چپ از م"وقعیت اولین در س"طح آخ"رین
راست( ت"ا می ش"ود تنظیم گ"ونه ای ب"ه درخت سپس
ش"ود. Max Treeوی"ژگی ایج"اد ن"یز آن ب"ودن ت"ا جاییک"ه از وال"دش بزرگ"تر maxHeap)یع"نی در
در و وال"دش minHeapباش"د از جاییک"ه ت"ا کوچکتر باشد باید با آن جابه جا شود.(
MINHEAP و MAXHEAPدرج عنصر در
25
درخت یازدهم، و دهم 92/10/05جلسه
الSعنص"ر :1مث در 95 را MaxHeap درج زی"ر کنید.
3075
80 90
98
60 25
12
3095
80 90
98
60 25
12 75
3080
95 90
98
60 25
12 75
0
1 98
2 80
3 90
4 75
5 60
6 30
7 25
8 12
9
0
1 98
2 80
3 90
4 95
5 60
6 30
7 25
8 12
9 75
0
1 98
2 95
3 90
4 80
5 60
6 30
7 25
8 12
9 75
مثال
26
درخت یازدهم، و دهم 92/10/05جلسه
2مثال: عناص"ر ب"ه 23، 42، 11، 57، 91، 44درج از چپ
تهی؟ maxHeapراست در درخت
3مثال: عناص"ر ب"ه 23، 42، 11، 57، 91، 44درج از چپ
تهی؟minHeapراست در درخت
1123
57 44
91
42
4457
42 23
11
91
MINHEAP و MAXHEAPحذف عنصر از
27
درخت یازدهم، و دهم 92/10/05جلسه
درخت از از Heapحذف هم""واره ریشSه صورت می گیرد.
پس از ح"ذف ریش"ه، آخ"رین عنص"ر ج"ایگزین آندر س"پس از maxHeapمی ش"ود. جائیک"ه ت"ا
فرزن"دانش کوچک"تر باش"د ب"ا بزرگ"ترین فرزن"دش ت"ا جائیک"ه از فرزن"دانش بزرگ"تر minHeapو در
باشد با کوچکترین فرزندش جابه جا می شود.
مثال
28
درخت یازدهم، و دهم 92/10/05جلسه
ازMaxHeap .زیر یک عنصر حذف کنید
3075
80 90
98
60 25
12 65
3075
80 90
65
60 25
12
3075
80 65
90
60 25
12
0
1 98
2 80
3 90
4 75
5 60
6 30
7 25
8 12
9
0
1 65
2 80
3 90
4 75
5 60
6 30
7 25
8 12
9
0
1 90
2 80
3 65
4 75
5 60
6 30
7 25
8 12
965
98