28
م ي ح ر ل ا ن م ح ر ل له ا ل م ا س بها داده مان ت ح سا ت ح در م ه د ار م و ی ه سه د ل ج92/09/29

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

  • Upload
    zilya

  • View
    93

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

درخت

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

92/09/29

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

پیمایش درخت

2درخت یازدهم، و دهم 92/10/05جلسه

پیم"ایش یع"نی مالق"ات(visit هم"ه گره ه"ای ی"ک درخت ب"ر )اساس روشی خاص.

ب"ار ی"ک فق"ط گ"ره ه"ر ب"ه می خ"واهیم پیم"ایش در دسترسی داشته باشیم.

( به ط"ور کلی پیم"ایش درخت"ان در دو ح"الت عمقیDFS )( انجام می شود. BFSو سطحی )

:برای پیمایش از نمادهای زیر استفاده می کنیم V مالقات :L فرزند چپ : Rفرزند راست :

:در مجموع چهار پیمایش را بررسی می کنیم پیمایشVLR : PreOrder پیمایشLVR : InOrder پیمایشLRV : PostOrder پیمایش سطحیLevelOrder

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

VLRپیمایش

3درخت یازدهم، و دهم 92/10/05جلسه

پیم"ایشpreorder مالق"ات درخت ریش"ه ابت"دا :ش"ده و س"پس زی"ر درخت س"مت چپ و پس از آن ه"ر پیم"ایش می ش"ود. راس"ت زی"ر درخت س"مت ن"یز در از زی"ر درخت"ان س"مت چپ و راس"ت ی"ک

صورت وجود به همین روش پیمایش می شوند.

VLR : ABDHJEKLCFMNGOP

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

LRVپیمایش

4درخت یازدهم، و دهم 92/10/05جلسه

پیم"ایش postorder ابت"دا زی"ر درخت س"مت چپ :و س"پس زی"ر درخت س"مت راس"ت پیم"ایش ش"ده و پس از آن ریش"ه مالق"ات می ش"ود. ه"ر ی"ک از زی"ر درخت"ان س"مت چپ و راس"ت ن"یز در ص"ورت

.وجود به همین روش پیمایش می شوند

LRV : POGNMFCLKEJHDBA

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

LVRپیمایش

5درخت یازدهم، و دهم 92/10/05جلسه

پیم"ایش inorder ابت"دا زی"ر درخت س"مت چپ :درخت ریش"ه آن از پس می ش"ود، پیم"ایش مالق"ات ش"ده و س"پس زی"ر درخت س"مت راس"ت پیم"ایش می ش"ود. ه"ر ی"ک از زی"ر درخت"ان س"مت همین ب"ه وج"ود ص"ورت در ن"یز راس"ت و چپ

روش پیمایش می شوند.

LVR : PGOCNFMALEKBJDH

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

پیمایش سطحی

6درخت یازدهم، و دهم 92/10/05جلسه

ب"ه چپ و س"طح ت"رتیب ب"ه درخت ه"ای گره راست مالقات می شوند.

LevelOrder : ABCDEFGHJKLMNOP

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

مثال

7درخت یازدهم، و دهم 92/10/05جلسه

انواع پیمایش را روی درخت زیرانجام دهید.

LVR: DCBFEAHNMIG

D F

M

B

A

I

E

G

H

N

C

LRV: DCFEBNMIHGA

VLR: ABCDEFGHIMN

LevelOrder : ABGCEHDFIMN

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

درخت عبارت محاسباتی

8درخت یازدهم، و دهم 92/10/05جلسه

ب"ه ص"ورت ه"ر عب"ارت محاس"باتی برای تش"کیل درخت زیر عمل می کنیم:

اول"ویت عملگره"ا اول"ویت برحس"ب را عب"ارت ابت"دا بندی می کنیم.

.ریشه درخت، کمترین اولویت را دارد ریش"ه زیردرخت"ان چپ و راس"ت ب"ه ت"رتیب کم اول"ویت

ترین عملگر در چپ و راست ریشه درخت است. .برگهای درخت عملوندها هستند

برای تب"دیل عب"ارات میانون"دی ب"ه پس"وندی ب"ا اس"تفاده ازپیم""ایش از محاس""باتی، درخت postOrderدرخت

استفاده می کنیم. برای تب"دیل عب"ارات میانون"دی ب"ه پیش"وندی ب"ا اس"تفاده از

درخت اس"تفاده preOrderدرخت محاس"باتی، از پیم"ایش می کنیم.

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

مثال

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

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

(BSTدرخت جستجوی دودویی )

10

درخت یازدهم، و دهم 92/10/05جلسه

یک درخت دودویی اس"ت ک"ه می توان"د تهی باش"د و اگ"رنباشد دارای خصوصیات زیر است:

هر عنصر دارای یک کلید منحصر به فرد است. ) کلیدتکراری نداریم(

)مقدار کلید های زیر درخت سمت چپ )در صورت وجودکمتر از کلید ریشه است.

)مقدار کلید های زیر درخت سمت راست ) در صورت وجودبیشتر از ریشه است.

زیر درخت های سمت چپ و سمت راست نیز درختان جستجوی دودویی هستند.

53

58

10

30

9215

86

67

42

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

مشخصات مهم درخت جستجوی دودویی

11

درخت یازدهم، و دهم 92/10/05جلسه

.هیچ عنصر تکراری در درخت وجود ندارد پیم"ایشinorder (LVR) درخت ه"ر BST ب"ه را عناص"ر

صورت مرتب شده صعودی نشان می دهد. با ش"روع از ریش"ه درخت و ح"رکت ب"ه س"مت چپ ت"ا

رس"یدن ب"ه گ"رهی ک"ه س"مت چپ آن گ"ره تهی اس"ت، ب"ه گ"رهی می رس"یم ک"ه مق"دار آن در درخت می"نیمم

است. با ش"روع از ریش"ه درخت و ح"رکت ب"ه س"مت راس"ت ت"ا

تهی گ"ره آن راس"ت س"مت ک"ه گ"رهی ب"ه رس"یدن در درخت آن مق"دار ک"ه گ"رهی می رس"یم ب"ه اس"ت،

ماکزیمم است.

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

جستجو در درخت جستجوی دودویی

12

درخت یازدهم، و دهم 92/10/05جلسه

جس"تجو می باش"د ک"ه از BSTمهم"ترین عم"ل در درخت ریش"ه آغ"از ش"ده و ح"داکثر ت"ا عم"ق درخت ادام"ه می یاب"د. ب"ه ص"ورت داخ"ل درخت جس"تجوی دودویی در جس"تجو

زیر انجام می شود: .اگر ریشه موجود نباشد جستجو ناموفق است ب"ه ص"ورت براب"ر باش"د جس"تجو ب"ا کلی"د ریش"ه اگ"ر کلی"د م"ورد جس"تجو

موفق آمیز خاتمه می یابد. باش"د ریش"ه از کوچک"تر جس"تجو م"ورد کلی"د اگ"ر ص"ورت این غ"یر در

جس"تجو در زی"ر درخت س"مت چپ و در غ"یر این ص"ورت در زی"ر درخت سمت راست به شیوه فوق ادامه می یابد.

ک"ه ص"ورتی در ب"ود خواه"د مقایس"ه ی"ک مقایس"ه، حداقل ب"ه مقایس"ه ح"داکثر باش"د. ریش"ه در م"ورد جس"تجو عنص"ر ب"ود در ص"ورتی ک"ه عنص"رمورد ان"دازه عم"ق درخت خواه"د

جستجو یکی از عناصر گره ها در پایین ترین سطح باشد. در ی"ک درخت جس"تجوی دودویی ب"اn گ"ره، ب"ه ط"ور متوس"ط

log2 n .مقایسه انجام می شود ی"ک درخت ب"ا BSTدر اریب n و ح"داکثر 1 گ"ره، ح"داقل n

مقایسه خواهیم داشت.

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

BSTکاربردهای

13

درخت یازدهم، و دهم 92/10/05جلسه

جستجو به دنبال داده ها حذف داده های تکراری از لیست ها( مرتب سازیsort لیست ها با پیمایش )inorder (LVR)

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

BSTدرج عنصر در

14

درخت یازدهم، و دهم 92/10/05جلسه

برای درج ی"ک عنص"ر ابت"دا، عم"ل جس"تجو ب"رای گ"ره م"ورد درج بای"د انج"ام ش"ود ت"ا مطمئن ش"ویم گ"ره م"ورد نظ"ر در

در BSTدرخت چ"ون باش"د، نداش"ته وج"ود BST عنص"ر پیش ح"الت دو وض"عیت، این در ن"دارد. وج"ود تک"راری

می آید: اگ"ر کلی"د م"ورد درج در درخت پی"دا ش"ود، در این ص"ورت

از لیس"ت ورودی ح"ذف می ش"ود. نیس"ت و قاب"ل درج )به دلیل تکراری بودن(

اگ"ر کلی"د م"ورد درج در درخت پی"دا نش"ود، در این ص"ورتب"ر حس"ب آنک"ه کوچک"تر ی"ا بزرگ"تر از مق"دار کلی"د آخ"رین گ"ره م"ورد جس"تجو اس"ت، ب"ه عن"وان فرزن"د س"مت چپ ی"ا

راست آن درج می شود.

دقت کنی"د ب"رای درج ه"ر گ"ره، مقایس"ه از ریش"ه آغ"از ش"ده بودن خود را حفظ کند. BSTو سعی داریم درخت، حالت

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

مثال

15

درخت یازدهم، و دهم 92/10/05جلسه

کلی"دهای زی"ر را از چپ ب"ه راس"ت در ی"ک درختجستجوی دودویی درج کنید.

30 , 86 , 67 , 53 , 10 , 58 , 92 , 42 , 15

30

53

15

92

5842

67

8610

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

BSTحذف عنصر از

16

درخت یازدهم، و دهم 92/10/05جلسه

بای"د ابت"دا عم"ل جس"تجو BSTبرای ح"ذف عنص"ر از درخت انجام گیرد. در این وضعیت دو حالت پیش می آید:

گره م"ورد نظ"ر ب"رای ح"ذف، در درخت وج"ود ن"دارد ک"هدر این صورت عملی انجام نمی شود.

گره م"ورد نظ"ر ب"رای ح"ذف از درخت وج"ود دارد ک"ه دراین حالت سه وضعیت بررسی می شود:

حذف گره برگ. 1.

حذف گرهی که یک فرزند دارد. 2.

حذف گرهی که دو فرزند دارد. 3.

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

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

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

با یک فرزند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

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

با دو فرزند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

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

با دو فرزند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

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

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

درخت کامل نیست

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

)برای مطالعه(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محاسبه عنصر ماکزیمم ⌋

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

در حافظهHEAPنمایش

23

درخت یازدهم، و دهم 92/10/05جلسه

نم"ایش و mintreeبرای maxtree درخت"ان لزوم"ا چ"ون ک"املی نیس"تند از نم"ایش پیون"دی اس"تفاده می ش"ود. چ"ون خواهن"د حافظ"ه اتالف آرای"ه از اس"تفاده ص"ورت در

داشت. برای نم"ایشmaxHeap و minHeap چ"ون درخت"ان ک"املی

هس"تند از آرای"ه اس"تفاده می ک"نیم ک"ه در این ح"الت اتالف حافظه نخواهیم داشت.

:مثال نحوه نمایش درخت مقابل در آرایه؟

32

75 80

83

75

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

MINHEAP و MAXHEAPدرج عنصر در

24

درخت یازدهم، و دهم 92/10/05جلسه

ابت"دا عنص"ر جدی"د ب"ه گ"ونه ای درج می ش"ود ک"هوی"ژگی کام"ل ب"ودن درخت حف"ظ ش"ود. )یع"نی در ب"ه چپ از م"وقعیت اولین در س"طح آخ"رین

راست( ت"ا می ش"ود تنظیم گ"ونه ای ب"ه درخت سپس

ش"ود. Max Treeوی"ژگی ایج"اد ن"یز آن ب"ودن ت"ا جاییک"ه از وال"دش بزرگ"تر maxHeap)یع"نی در

در و وال"دش minHeapباش"د از جاییک"ه ت"ا کوچکتر باشد باید با آن جابه جا شود.(

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

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

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

مثال

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

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

MINHEAP و MAXHEAPحذف عنصر از

27

درخت یازدهم، و دهم 92/10/05جلسه

درخت از از Heapحذف هم""واره ریشSه صورت می گیرد.

پس از ح"ذف ریش"ه، آخ"رین عنص"ر ج"ایگزین آندر س"پس از maxHeapمی ش"ود. جائیک"ه ت"ا

فرزن"دانش کوچک"تر باش"د ب"ا بزرگ"ترین فرزن"دش ت"ا جائیک"ه از فرزن"دانش بزرگ"تر minHeapو در

باشد با کوچکترین فرزندش جابه جا می شود.

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

مثال

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