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