بسم الله الرحمن الرحيم ساختمان دادهها

Post on 17-Jan-2016

97 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

بسم الله الرحمن الرحيم ساختمان داده‌ها. درخت. جلسه دهم و یازدهم 92/09/29. پیمایش درخت. 2. پیمایش یعنی ملاقات (visit) همه گره‌های یک درخت بر اساس روشی خاص. در پیمایش می‌خواهیم به هر گره فقط یک بار دسترسی داشته باشیم. - PowerPoint PPT Presentation

TRANSCRIPT

بسم الله الرحمن الرحيم

ساختمان داده ها

درخت

جلسه دهم و یازدهم

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

top related