36
ت خ درTREE A.M. Safaei ه گان ی ش خ ب ی ست ه د داون ام خ هن ن م ت ف ه سه ل خ

درخت

Embed Size (px)

DESCRIPTION

جلسه هفتم. به نام خداوند هستی بخش یگانه. درخت. TREE. A.M. Safaei. جلسه هفتم. درخت ها. تعریف درخت مجموعه محدودی از یک گره ( NODE ) یا چند گره که بصورت زیر تعریف شود: دارای گره ای خاص به نام ریشه ( Root ) باشد. - PowerPoint PPT Presentation

Citation preview

Page 1: درخت

TREEدرخت

A.M. Safaei

یگانه بخش هستی خداوند نام به هفتم جلسه

Page 2: درخت

هفتم جلسه

درخت تعریف

گره )– یک از محدودی :NODEمجموعه شود( تعریف زیر بصورت که گره چند یا

ریشه )• نام به خاص ای گره .Rootدارای باشد(

مجزای • های مجموعه به ها گره مجموعه T1, …, Tnبقیه این از یک هر که شده تقسیم

و است درخت یک خود .T1, …, Tnها شوند می نامیده ریشه های درخت زیر

درخت : – عمومی - 1انواع های دودویی- 2درخت های درخت

دودویی )– باشد،( : Binary Treeدرخت داشته فرزند دو حداکثر آن گره هر که است درختی

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

ها درخت

Page 3: درخت

هفتم جلسه

ها درخت به مربوط اصطالحات

. Nodeگره )– مثل(: گویند گره درخت در موجود عناصر رو,… A,B,Cبه مثال در

رو به

– ,(ِ گره . Degreeدرجه مثال(: در است گره آن فرزندان تعداد با برابر گره درجه

گره رو گره 2درجه Aروبه .1درجه Bو Cو باشند می

.Leafبرگ )– دارند( : صفر درجه که پایانی، های گره

– . : درخت آن های گره درجه حداکثر با است برابر درخت درجه درخت درجه

درجه زیر درخت . 3مثال باشد می

نیا )– هم یا همزاد های هستند،(: Sibilingگره پدرمشترک دارای که هایی گره

های • گره مثال؛ .H,I,Jبعنوان همزادند

حداکثر : Kدرخت – آن در گره هر فرزندان تعداد که درختی .Kتایی باشد

–. باشد : یک حداکثر آن های برگ سطح اختالف که درختی متوازن درخت

–. باشد : صفر آن های برگ سطح اختالف که درختی متوازن کامال درخت

ها درخت

Page 4: درخت

هفتم جلسه

ها درخت به مربوط اصطالحات

گره )– یک بر(: Levelسطح ها گره سایر بگیریم نظر در یک سطح در را ریشه اگر

هایی گره لذا گیرند، می سطح شماره دارند فاصله ریشه از که یالی تعداد اساس

فاصله سطح nبا در ریشه از .n+1یا دارند قرار

درخت )– ارتفاع یا . Depthعمق در(: گویند عمق را درخت برگهای سطح بیشترین

درخت عمق زیر .4شکل است

– ) ( : و یال شود، می رسم دیگر گره به گره یک از که پیوندی خطی مسیر و یال

. نامند می مسیر یک را متوالی های یال از ای دنباله

های : – گره تمام به ریشه از ها مسیر تمام های طول مجموع درخت مسیر طول

: . داریم زیر درخت برای است درخت

ها درخت

Page 5: درخت

هفتم جلسه

( درخت (3پرانتزی- 2درختی- 1نمایش پیوندی- لیست

درختی – فرم

– ( اطالعات پرانتزها داخل در سپس و ریشه اطالعات ابتدا پرانتزی فرم

) گیرد می قرار راست به چپ از ترتیب به گره هر فرزندان

ها درخت

(A(B(E(K ،L)،F)،C(G)،D(H(M)،I،J)))

A

C

G

DB

E H I J

M

F

LK

5

Page 6: درخت

هفتم جلسه

( درخت (3پرانتزی- 2درختی- 1نمایش پیوندی- لیست

– : به سطح یک کردن اضافه با نباشد برگ که فرزندی هر پیوندی لیست فرم

. دهیم می نمایش لیست زیر صورت به لیست

ها درخت

A

C

G

DB

E H I J

M

F

LK

6

(A(B(E(K,L),F),C(G),D(H(M),I,J)))

Page 7: درخت

هفتم جلسه

دودویی درخت

دودویی درخت می Tیک تعریف ها گره نام به عناصر از متناهی ای مجموعه بصورت

که : بطوری شود

اگر( .Tالف گویند تهی یا پوچ درخت آن به باشد خالی

زیردرخت ( دو و ریشه یک ها، گره از محدود ای مجموعه حاوی باشد T2و T1ب می

. شود می گفته راست و چپ های درخت زیر آنها به ترتیب به که

درخت : – مشابه دودویی بعبارت T2و T1درخت باشند ساختار یک دارای هرگاه گویند مشابه را

. باشند شکل یک دارای دیگر

درخت : – کپی دودویی آنها T2و T1درخت های گره محتوای و بوده مشابه هرگاه گویند کپی را

. باشد یکسان نیز

ها درخت

7

Page 8: درخت

هفتم جلسه

دودویی درخت انواع

–) اریب ) مورب درخت

• . به مورب درخت یک باشد خود پدر چپ فرزند گره، هر هرگاه باشد، می چپ به مورب درخت یکی

. باشد خود پدر راست فرزند گره هر هرگاه ؛ راست

ها درخت

8

کامل )– دودویی (Complateدرخت

داشته • فرزند دو تواند می آن گره هر که است دودویی درخت

باشد یک آن های گره سطح بین اختالف حداکثر و باشد

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

Page 9: درخت

هفتم جلسه

دودویی درخت انواع

پر )– دودویی (Fullدرخت

داشته • فرزند دو دقیقا آخر سطح های گره جز به ها گره کلیه آن در که است دودویی درخت

باشند

عمق • به پر دودویی درخت اینكه kیک به مشروط است پر دودویی درخت یک ،2k-1 گره

. باشد داشته

پر )– کامال ( Perfectدرخت

• ) بودن ) فرزندان حداکثر درای برگها آخر سطح های گره بجز ها گره همه که است درختی

. ) باشند) نیز سطح هم برگها و درخت درجه حداکثر

ها درخت

Page 10: درخت

هفتم جلسه

دودویی درخت خواص

ها گره تعداد حداکثر

سطح • در ها گره تعداد دودویی iحداکثر درخت یک است. 2i-1ام

عمق • به دودویی درخت یک در ها گره تعداد .k ، 2k-1حداکثر است

ها درخت

K عمق ها گره تعداد

1 1

2 3

3 7

Page 11: درخت

هفتم جلسه

دودویی درخت خواص

درجه های گره و برگ های گره تعداد بین 2رابطه

مانند تهی غیر دودویی درخت هر اگر Tبرای ،n0 و پایانی های گره تعداد n2تعداد

درجه های داشت :2گره خواهیم آنگاه ، باشد

درجه های گره تعداد از بیشتر یکی دودویی درخت در همواره برگها تعداد 2یعنی

باشد .می

عمق: به دودویی درخت یک که صورتی در باشیم؛ 6مثال درخت داشته اگر

حداقل باشد حداکثر 6مورب باشد پر درخت اگر و دارد خواهد 63=1-6^2گره گره

داشت.

ها درخت

120 nn

Page 12: درخت

هفتم جلسه

دودویی درخت خواص

با كامل دودویی درخت یك با : nارتفاع است برابر گره

با دودویی درخت عمق nیک و هایش kگره گره اگر تنها و اگر ، است کامل

عمق به پر دودویی درخت یک در شده گذاری شماره های گره با .kمطابق باشد

عمق با درخت یک برگ غیر های گره تعداد خواهد Kحداکثر با برابر

بود.

ها درخت

)1(log2 n

12 1 k

Page 13: درخت

هفتم جلسه

دودویی درخت نمایش

درخت نمایش در موضوع ترین ریشه Tاصلی به که است Tدرخت Rاین

درخت از گره هر بودن معلوم با و باشیم داشته مستقیم Tدسترسی

. باشیم داشته دسترسی نیز آن فرزند هر به بتوان

: از است عبارت دودویی درخت نمایش و سازی پیاده روش دو

1) آرایه- ) بوسیله نمایش دودویی درخت ترتیبی روش

2) پیوندی- ) لیست بوسیله نمایش دودویی درخت پیوندی نمایش

ها درخت

Page 14: درخت

هفتم جلسه

آرایه بوسیله دودویی درخت نمایش

. بدین کرد استفاده ها آرایه از توان می دودویی های درخت نمایش برای

یک برای مفروض درخت با متناظر کامل درخت های گره تعداد به منظور

: . داریم آنصورت در داریم نیاز حافظه آرایه

می گذاری شماره بعد به یک عدد از و راست به چپ از را دودویی درخت های گره ابتدا

با. آرایه از ای رخانه د خاص شماره با را دودویی درخت گره هر محتوای سپس کنیم

. عمق به دودویی درخت یک برای کنیم می ذخیره شماره از hهمان خانه به

. است نیاز آرایه

. گیرد می قرار آرایه اول خانه در ریشه

اندیس با ای گره چپ سمت خانه iفرزند درون آرایه که 2iدر گیرد می . 2i<nقرار اگر بود خواهد

2i>n گره یعنی . = iبود چپ سمت فرزند ندارد چپ سمت 2iفرزند

اندیس با ای گره راست سمت خانه iفرزند درون آرایه که 2i+1در گیرد می قرار 2i+1<=nآرایه

. اگر بود گره 2i+1>nخواهد یعنی . = iباشد راست سمت فرزند ندارد راست سمت 2i+1فرزند

ها درخت

12 h

Page 15: درخت

هفتم جلسه

آرایه بوسیله دودویی درخت نمایش

ها درخت

A

CB

D E F

G H

1

2 3

4

9

6

13

7

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

A B C D E F G H

های 1. گره جایگاه گرفتن نظر در با سطحی ترتیب به را ها گره ابتدا. نماییم می گذاری شماره خالی،

گره 2. شماره برابر آن اندیس که آرایه از ای خانه در را گره هر سپس. نویسیم می است

Page 16: درخت

هفتم جلسه

آرایه بوسیله دودویی درخت نمایش مزایای و معایب

مزایا

o ) بسیار ) کامل یا و پر درخت دارند گره زیادی تعداد که هایی درخت برای آرایه از استفاده

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

o. است دستیابی قابل اندیس محاسبه طریق از و راحتی به دیگری گره طریق از گره هر

o راست و چپ درخت زیر گرهای اشاره ذخیره به نیازی و شوند می ذخیره ها داده فقط

. بود نخواهد

o. است تر ساده آرایه با سازی پیاده

معایب

o مورب درخت مثل نباشد کامل درخت اگر ها آرایه بوسیله دودویی های درخت نمایش در

. داشت خواهیم حافظه اتالف و نیست خوبی روش اصال

o. نیست افزایش قابل آرایه طول درخت عمق افزایش با

o می آنها سطح شماره تغییر و ها گره جابجایی باعث و نیست کارآمد حذف و درج اعمال

شود.

ها درخت

Page 17: درخت

هفتم جلسه

دودویی های درخت پیوندی نمایش

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

ها درخت

LChild Data RChild

Left info Right

17

a

cb

d

f

e

g

h

Root

راست

Page 18: درخت

هفتم جلسه

دودویی های درخت پیوندی نمایش

توان می فقط گره هر توسط که است این پیوندی نمایش معایب از یکی

( . پدر یافتن ولی کرد پیدا را آن لذا( Parentفرزندان نیست، ممکن گره یک

بنام چهارمی فیلد توان می مشکل این حل نظر Parentبرای در ساختار برای

گرفت.

ها درخت

Left Parent info Right Struct TreeNode

{

elementtype info;

node *left;

node *right;

};

Page 19: درخت

هفتم جلسه

دودویی های درخت پیمایش

) ( روش یک تحت بار یک فقط گره هر درخت های گره تمام به دستیابی

: روش دو به که نامند می درخت پیمایش را سطحی- 1مشخص پیمایش

) .2ردیفی) است- پذیر امکاان درخت عمقی پیمایش

سطحی- 1 پیمایش

o بعد و چپ فرزند سپس ریشه، ابتدا گیرد می صورت صف یک از استفاده با روش این در

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

. شود نمی شروع بعد سطح های گره مالقات نشود

ها درخت

void level_order (node *tree) { front = rear= -1; while (tree) { cout<< treeinfo; if (tree left ) addq ( treeleft ); if ( treeright ) addq ( treeright ) ; delete(tree) ; } }

Page 20: درخت

هفتم جلسه

سطحی پیمایش روش تمرین

ها درخت

a

b c

d ef

g h i j

Level Order = g hd ieb jfca

Page 21: درخت

هفتم جلسه

دودویی های درخت پیمایش

عمقی- 2 پیمایش

o . اگر پذیرد می انجام پشته از استفاده با روش این عمقی Lدر پیمایش را

و چپ و Vزیردرخت گره مالقات راست Rرا درخت زیر عمقی پیمایش را

: داریم دودویی درخت پیمایش برای ممکن ترکیب شش کنیم؛ فرض

RLV ، RVL ، VRL ، VLR ، LRV ، LVR

دودویی درخت عمقی پیمایش برای کلی حالت سه

ها درخت

1 2 3چپ ریشه راست پیمایش

پیشوندی

چپ ریشه راست پیمایش میانوندی

چپ راست ریشه پیمایش پسوندی

Page 22: درخت

هفتم جلسه

دودویی های درخت پیمایش

: زیر : دودویی درخت عمقی پیمایش حالت سه مثال

ها درخت

1 2 3

چپ ریشه راست پیمایش پیشوندی

چپ ریشه راست پیمایش میانوندی

چپ راست ریشه پیمایش پسوندی

پیشوندی = a b d g c eپیمایشh f i jپسوندی = g d b h e i پیمایشj f c a

میاونوندی = d g b a e hپیمایشc i f j

Page 23: درخت

هفتم جلسه

عمقی پیمایش پسوندی بازگشتی الگوریتم

ها درخت

void Postorder (node *tree)

{

if ( tree)

{

Postorder (tree left );

Postorder(tree right );

cout<<tree info ;

}

}

1 2 3

چپ راست ریشه پیمایش پسوندی

پسوندی = g d b h e i پیمایشj f c a

Page 24: درخت

هفتم جلسه

عمقی پیمایش پیشوندی بازگشتی الگوریتم

ها درخت

void Preorder (node *tree)

{

if (tree)

{

cout<<tree info;

Preorder (tree left );

Preorder (tree right );

}

}

1 2 3

چپ ریشه راست پیمایش پیشوندی

پیشوندی = a b d g c eپیمایشh f i j

Page 25: درخت

هفتم جلسه

عمقی پیمایش میانوندی بازگشتی الگوریتم

o

ها درخت

void inorder (node *tree)

{

if(tree)

{

inorder (tree left );

cout<<tree info;

inorder ( treeright );

}

}

1 2 3

چپ ریشه راست پیمایش میانوندی

میاونوندی = d g b a e hپیمایشc i f j

Page 26: درخت

هفتم جلسه

پیمایش از استفاده با دودویی های درخت ساخت

o که مشکلی کنیم، ایجاد را اولیه دودویی درخت بتوان پیمایش از استفاده با

درخت توان نمی ، باشد موجود درخت از پیمایش نوع یک اگر دارد وجود

ممکن که آید می بدست درخت چند بلکه کرد، ایجاد را فردی به منحصر دودوی

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

باشیم داشته را دودویی درخت یک پیشوندی یا پسوندی های پیمایش از یکی

. کنیم ترسیم یکتا بصورت را درخت آن توانیم می

العمل دستور

o. است ریشه آن گره اولین باشد، پیشوندی پیمایش اگر

o. است ریشه آن، گره آخرین باشد، پسوندی پیمایش اگر

o درخت زیر و چپ درخت زیر های گره تمام شد، مشخص ریشه گره وقتی

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

ها درخت

Page 27: درخت

هفتم جلسه

پیمایش از استفاده با دودویی های درخت ساخت

o که مشکلی کنیم، ایجاد را اولیه دودویی درخت بتوان پیمایش از استفاده با

درخت توان نمی ، باشد موجود درخت از پیمایش نوع یک اگر دارد وجود

ممکن که آید می بدست درخت چند بلکه کرد، ایجاد را فردی به منحصر دودوی

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

باشیم داشته را دودویی درخت یک پیشوندی یا پسوندی های پیمایش از یکی

. کنیم ترسیم یکتا بصورت را درخت آن توانیم می

العمل دستور

.1. است ریشه آن گره اولین باشد، پیشوندی پیمایش اگر

.2. است ریشه آن، گره آخرین باشد، پسوندی پیمایش اگر

درخت 3. زیر و چپ درخت زیر های گره تمام شد، مشخص ریشه گره وقتی

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

ها درخت

Page 28: درخت

هفتم جلسه

پیمایش روی از دودویی درخت پیشوندیو میانوندیساخت

دستورالعمل

درخت 1. توان می دودویی، درخت یک پیشوندی و میانوندی پیمایش داشتن با

. کرد ترسیم یکتا بصورت را

پیمایش 2. رشته ابتدا منظور این بررسی پیشوندیبرای راست به چپ از را

. این جایگاه به توجه با سپس آوریم می بدست را درخت ریشه و نماییم می

پیمایش در مشخص میانوندیگره را راست و چپ های زیردرخت های گره ،

. نماییم می

و 3. کرده بررسی راست به چپ از بترتیب را پیشوندی پیمایش رشته ادامه در

. دهیم می تشکیل را درخت فوق روش به

ها درخت

Page 29: درخت

هفتم جلسه

پیمایش روی از دودویی درخت ساخت پیشوندیو میانوندیمثال

ها درخت

g d h b e i a f j c =میانوندی a b d g h e i c f j =پیشوندی

درخت :• ساخت اول مرحله

مرحله دوم ساخت گره های سمت راست :•

a

gdhbei fjc

a

gdh

fjcb

ei

Page 30: درخت

هفتم جلسه

پیمایش روی از دودویی درخت ساخت پیشوندیو میانوندیمثال

ها درخت

g d h b e i a f j c =میانوندی a b d g h e i c f j =پیشوندی

درخت :• ساخت سوم مرحله

مرحله آخر:•

a

g

fjcb

eid

ha

g

b

d

h

e

i j

c

f

Page 31: درخت

هفتم جلسه

پیمایش روی از دودویی درخت پسوندیو میانوندیساخت

دستورالعمل

یکتا 1. بصورت را درخت توان می دودویی، درخت یک پسوندی و میانوندی پیمایش داشتن با

. کرد ترسیم

می 2. عمل پیشوندی و میانوندی پیمایش از استفاده با درخت ساخت مانند منظور این برای

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

نکات

توان نمی اوقات اغلب در دودویی، درخت یک پسوندی و پیشوندی پیمایش داشتن با

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

. آن چپ سمت در یا دارد قرار پدر گره راست سمت در گره، فرزند که نمود مشخص

دارای دودویی درخت که صورتی در پسوندی و پیشوندی پیمایش داشتن با nپس

باشد فرزندی تک درkخت مkتفاوت kمی تواkن ایجاد نمود.2nگkره

وانkیز می تkایش نkک پیمkا یkتن تنهkا داشkر بkا پkل یkک درخت دودویی کامkم یkبرای رس

.kسم نمودkرا ر kودوییkت دkدرخ

ها درخت

Page 32: درخت

هفتم جلسه

دودویی درخت با محاسباتی عبارات نمایش

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

. محض در را عملگرها و برگها در را ها عملوند باید کار این برای داد نمایش

. آن در که است درختی محض دودویی درخت دهیم قرار برگ غیر های گره

. باشند دو یا صفر درجه از ها گره تمام

ها درخت

محض غیر دودویی محض درخت دودویی درخت

Page 33: درخت

هفتم جلسه

: دودویی درخت با محاسباتی عبارات نمایش مثال

( میانوندی تقدم( infixپیمایش تعویض جهت پرانتزها از استفاده مستلزم

( میانوندی پیمایش با توان نمی عملگرهاست بدست( inorderعادی ساده

آورد.

ها درخت

( A+ B * C) ^ (( A+B) * C)

A + B * C

Page 34: درخت

هفتم جلسه

دودویی درخت با محاسباتی عبارات نمایش

نکته

مثال ) : باشد داشته یکانی عملگر محاسباتی عبارت آن ( B-چنانچه عملوند باید

. دهیم قرار یکانی عملگر راست فرزند را

ها درخت

*A -

B

Preorder: *A-BPostorder: AB-*Inorder: A*(-B)

Page 35: درخت

هفتم جلسه

تمرین

دودویی – درخت یک پیمایش کنید می FBDACHGMNبصورت کاملفرض

. کنید رسم را آن دودویی درخت باشد،

– ، است موجود زیر پیمایش بسازید- 1دو را پیمایش این دودویی - 2درخت

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

باشد؟ می

–Preorder = ABDFGHIJCE Postorder = FIJHGDBECA

ها درخت

Page 36: درخت

Any Question

????