tree sort

Post on 10-Jan-2016

48 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Tree Sort. درخت جستجوی دودویی (Binary Search Tree). درخت جستجوی دودویی یک درخت دودویی است که ممکن است تهی باشد. اگر تهی نباشد دارای خاصیت زیر است: مقدار هر گره بزرگتر از هر مقدار در زیر درخت چپ و کوچکتر از هر مقدار در زیر درخت راست آن می باشد. - PowerPoint PPT Presentation

TRANSCRIPT

دودویی جستجوی Binary)درختSearch Tree)

ممکن که است دودویی درخت یک دودویی جستجوی درخت

: . است زیر خاصیت دارای نباشد تهی اگر باشد تهی است

درخت زیر در مقدار هر از بزرگتر گره هر مقدار

آن راست درخت زیر در مقدار هر از کوچکتر و چپ

. باشد می

دارای نباید گره دو و است کلید یک دارای گره هر

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

: الف شکل زیر شکلهای فرزند BSTدر که چرا نیست

گره که( 10یعنی ) 15راست حالی در است کوچکتر آن از

. باشد بزرگتر باید

درخت یک ب . BSTشکل باشد می20

15 25

12 10

30

5 40

2 ) الف)ب ))

در عنصر یک BSTجستجوی

کلید با عنصری دنبال بخواهیم کنید . xفرض از ابتدا بگردیم

فاقد . جستجو درخت باشد، تهی ریشه اگر کنیم می شروع ریشه

. این غیر در بود خواهد ناموفق جستجو و بوده عنصری هر

. xصورت، اگر کنیم می مقایسه ریشه کلید مقدار با کمتر xرا

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

راست xاگر درخت زیر آنگاه باشد ریشه کلید مقدار از بزرگتر

. کنیم می جستجو را

: کنیم می بیان را جستجو الگوریتم زیر در

Function search )t: BSTpointer; x:integer(:boolean;

Var found: boolean;

Begin

found:=false;

if )t<>nill( then begin

found=TRUE if data)t( = x then

else if data)t( > x then

found := search )Lchild)t( , x(

else if data)t( < x then

Search )Rchild )t(, x(; found=:

end;

Search := found;

End;

نکته:

با hاگر باشد، دودویی جستجوی درخت یک عمق یا ارتفاع

تابع از در searchاستفاده را جستجو عمل توانیم )O)hمی

. دهیم انجام

میزان به اضافی پشته یک به بازگشتی روش در )O)hالبته

. داشت خواهیم نیاز

به عنصر یک کردن BSTاضافه

جدید عنصر درج ی این xبرا آیا که نمود مشخص ابتدا باید ،

. انجام برای خیر یا باشد می متفاوت موجود عناصر با عنصر

. باشد ناموفق جستجو اگر کرد جستجو را درخت باید کار این

است کرده پیدا خاتمه جستجو که محلی در را عنصر ما پس

. الگوریتم شبیه کردن اضافه الگوریتم بنابراین کنیم می درج

جستجو الگوریتم انتهای به باید کار این برای و است جستجو

: کنیم اضافه را زیر خط if )not found ( then insert )x ,q(;

: insertتابع است زیر صورت بهProcedure insert ) x: integer ; q: BSTpointer(;

Var t: BSTpointer;

Begin

new )t(; data)t( := x;

Lchild )t(:=nil; Rchild )t(:=nil;

if )data )q( > x( then

Lchild )q(:=t

else if )data)q( < x( then

Rchild)q(:=t;

End;

درختی سازی Tree Sortمرتب

دودویی جستجوی درختهای از روش این مرتب BSTدر برای

. درخت اگر شود می استفاده صورت BSTسازی inorderبه

خواهد مرتب صعودی صورت به حاصل دنباله شود، پیمایش

شد.

درخت یک داخل یک به یک آرایه عناصر ابتدا الگوریتم این در

BST . با همزمان سپس کنیم می درج است تهی ابتدا در که

قرار آرایه یک در را شده پیمایش عناصر درخت، این پیمایش

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

40,60,50,33,55,1140 60 > 40

60

50 > 40

50 < 60

50

33 < 40

33

55 > 40

55 < 60

55 > 50

55

11 < 40

11 < 33

11 33 40 50 55 60

بدترین حالت

متوسط بهترین حالتحالت

O )n^2(O)n log n(O)n log n(پیچیدگی اجرایی

با شده داده اعداد اگر که است آن مهم نکته

درختهای گاه آن باشند، شده داده مختلفی ترتیب

عمق و کنند می فرق هم با است ممکن حاصل

. باشند داشته مختلفی

از عنصر یک BSTحذف

از عنصر یک . BSTحذف زیرا است آن درج از دشوارتر نسبتا

گره باید است فرزند دارای که شود می حذف ای گره وقتی

. این اگر شود شده حذف گره جایگزین تا شود انتخاب دیگری

خواص نشود انجام درست .BSTانتخاب شود می نقض

در ابتدا شود حذف باید که ای شود BSTگره می جستجو

حفظ درخت خواص که شود می جایگزین نحوی به سپس

شود.

فرزندی. 1حالت و باشد برگ شود حذف باید که ای گره

. می انجام سادگی به حذف حالت این در باشد نداشته

. شود تهی برابر والد گر اشاره است کافی و پذیرد

90

50 95

20

5 25

90

50 95

20

5

چپ. 2حالت فرزند یک دارای تنها شود حذف باید ای گره . شود آن جایگزین تواند می که است

90

50 95

20

5 25

90

9520

5 25

چپی. 3حالت فرزند شود حذف باید که ای گره راست فرزند. شود. می آن جایگزین راست فرزند بنابراین ندارد

90

50 150

20 125

140

90

50 175

20 125

140

چپ. 4حالت فرزند شود حذف باید که ای گره راست فرزند

آن. جایگزین گره راست فرزند ترین چپ حالت این در دارد

. شود می

. گره راست درخت مقدارزیر کوچکترین یعنی

گره بخواهیم اگر مثال ترین 50برای چپ کنیم حذف را

یعنی آن راست .66فرزند کنیم می حذف را

90

50 150

20

5

75

80

90

66 150

20

5

75

80

:inorderپیمایش است زیر صورت به

15,25,33,44,50,60,66,75.

گره از 33بنابراین بعد ظاهر 25که

گره جانشین را شود .25می کنیم می

گره ابتدا ) 33یعنی حالت به بنا کرده حذف را

جای( را آن سپس و .25ب دهیم می قرار

60

25 75

15 50 66

33

گره جای 33جانشینی تنها 25به حافظه در

با نه و شود می انجام گرها اشاره تغییر با

مکان یک از گره یک محتوای جایی به جا

. دیگر مکان به

گره بجای گره 33البته توانیم جانشین 15می را

25. کنیم

درخت نتیجه نمی BSTدر یکتا حذف عمل از حاصل

باشد.

60

33 75

15 50 66

44

زمان در تواند می حذف که )O)hعمل گیرد hانجام

. باشد می درخت عمق

درخت یک متوسط BSTدر ارتفاع ، Log 2nبا

. کرد حذف میتوان را عنصر کوچکترین

منبع:دادها ساختمان

مقسمی حمیدرضاwww.HPKClasses.ir

: کنندگان تهیهامامی مونا

جو نوع سمانه

استاد استاد راهنما:

کسمایی

top related