درخت. سید ناصر رضوی

Σχετικά έγγραφα
محاسبه ی برآیند بردارها به روش تحلیلی

تصاویر استریوگرافی.

مثال( مساله الپالس در ناحیه داده شده را حل کنید. u(x,0)=f(x) f(x) حل: به کمک جداسازی متغیرها: ثابت = k. u(x,y)=x(x)y(y) X"Y=-XY" X" X" kx = 0

روش محاسبه ی توان منابع جریان و منابع ولتاژ

جلسه ی ۱۰: الگوریتم مرتب سازی سریع

جلسه ی ۱۸: درهم سازی سرتاسری - درخت جست و جوی دودویی

فصل پنجم زبان های فارغ از متن

جلسه ی ۱۱: درخت دودویی هرم

جلسه ی ۵: حل روابط بازگشتی

يﺎﻫ ﻢﺘﻳرﻮﮕﻟا و ﺎﻫ ﺖﺧرد فاﺮﮔ ﻲﻤﺘﻳرﻮﮕﻟا ﻪﻳﺮﻈﻧ :سرد ﻲﺘﺸﻬﺑ ﺪﻴﻬﺷ هﺎﮕﺸﻧاد ﺮﺗﻮﻴﭙﻣﺎﻛ مﻮﻠﻋ هوﺮﮔ ﻪﻴﻟوا ﺞﻳﺎﺘﻧ و ﺎﻫﻒ ﻳﺮﻌﺗ

جلسه ی ۲۴: ماشین تورینگ

مدار معادل تونن و نورتن

مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل

تحلیل مدار به روش جریان حلقه

جلسه ی ۴: تحلیل مجانبی الگوریتم ها

معادلهی مشخصه(کمکی) آن است. در اینجا سه وضعیت متفاوت برای ریشههای معادله مشخصه رخ میدهد:

سايت ويژه رياضيات درسنامه ها و جزوه هاي دروس رياضيات

جلسه 3 ابتدا نکته اي در مورد عمل توابع بر روي ماتریس ها گفته می شود و در ادامه ي این جلسه اصول مکانیک کوانتمی بیان. d 1. i=0. i=0. λ 2 i v i v i.

شاخصهای پراکندگی دامنهی تغییرات:

تخمین با معیار مربع خطا: حالت صفر: X: مکان هواپیما بدون مشاهده X را تخمین بزنیم. بهترین تخمین مقداری است که متوسط مربع خطا مینیمم باشد:

تمرین اول درس کامپایلر

آزمون مقایسه میانگین های دو جامعه )نمونه های بزرگ(

دانشکده ی علوم ریاضی جلسه ی ۵: چند مثال

آزمایش 1: پاسخ فرکانسی تقویتکننده امیتر مشترك

1) { } 6) {, } {{, }} 2) {{ }} 7 ) { } 3) { } { } 8) { } 4) {{, }} 9) { } { }

الگوریتمهای فشردهسازی بدون اتالف )Lossless(

جلسه ی ۳: نزدیک ترین زوج نقاط

جلسه 12 به صورت دنباله اي از,0 1 نمایش داده شده اند در حین محاسبه ممکن است با خطا مواجه شده و یکی از بیت هاي آن. p 1

آزمایش 8: تقویت کننده عملیاتی 2

ویرایشسال 95 شیمیمعدنی تقارن رضافالحتی

سلسله مزاتب سبان مقدمه فصل : زبان های فارغ از متن زبان های منظم

تحلیل الگوریتم پیدا کردن ماکزیمم

Angle Resolved Photoemission Spectroscopy (ARPES)

SanatiSharif.ir مقطع مخروطی: دایره: از دوران خط متقاطع d با L حول آن یک مخروط نامحدود بدست میآید که سطح مقطع آن با یک

Delaunay Triangulations محیا بهلولی پاییز 93

جلسه 2 1 فضاي برداري محاسبات کوانتمی (22671) ترم بهار

نظریه زبان ها و ماشین ها

بسم اهلل الرحمن الرحیم آزمایشگاه فیزیک )2( shimiomd

ﯽﺳﻮﻃ ﺮﯿﺼﻧ ﻪﺟاﻮﺧ ﯽﺘﻌﻨﺻ هﺎﮕﺸﻧاد

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

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

جلسه 9 1 مدل جعبه-سیاه یا جستاري. 2 الگوریتم جستجوي Grover 1.2 مسا له 2.2 مقدمات محاسبات کوانتمی (22671) ترم بهار

:موس لصف یسدنه یاه لکش رد یلوط طباور

پشته. سید ناصر رضوی

هندسه تحلیلی بردارها در فضای R

قاعده زنجیره ای برای مشتقات جزي ی (حالت اول) :

جلسه دوم سوم چهارم: مقدمه اي بر نظریه میدان

مسائل. 2 = (20)2 (1.96) 2 (5) 2 = 61.5 بنابراین اندازه ی نمونه الزم باید حداقل 62=n باشد.

هو الحق دانشکده ي مهندسی کامپیوتر جلسه هفتم

Top Down Parsing LL(1) Narges S. Bathaeian

به نام خدا. Sparse Coding ستاره فرامرزپور

فصل 5 :اصل گسترش و اعداد فازی

جلسه 14 را نیز تعریف کرد. عملگري که به دنبال آن هستیم باید ماتریس چگالی مربوط به یک توزیع را به ماتریس چگالی مربوط به توزیع حاشیه اي آن ببرد.

جلسه 15 1 اثر و اثر جزي ی نظریه ي اطلاعات کوانتومی 1 ترم پاي یز جدایی پذیر باشد یعنی:

فهرست مطالب جزوه ی فصل اول مدارهای الکتریکی مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل تحلیل مدار به روش جریان حلقه... 22

1 دایره فصل او ل کاربردهای بسیاری داشته است. یک قضیۀ بنیادی در هندسه موسوم با محیط ثابت دایره دارای بیشترین مساحت است. این موضوع در طراحی

دبیرستان غیر دولتی موحد


srmphp.blog.ir موسسه آموزش عالی مهراروند ساختمان داده مهندس سید رسول موسوی تهیه و تنظیم: الهام صباحی

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت

جلسه 22 1 نامساویهایی در مورد اثر ماتریس ها تي وري اطلاعات کوانتومی ترم پاییز

Spacecraft thermal control handbook. Space mission analysis and design. Cubesat, Thermal control system

راهنمای کاربری موتور بنزینی )سیکل اتو(

تمرینات درس ریاض عموم ٢. r(t) = (a cos t, b sin t), ٠ t ٢π. cos ٢ t sin tdt = ka۴. x = ١ ka ۴. m ٣ = ٢a. κds باشد. حاصل x٢

فصل اول پیچیدگی زمانی و مرتبه اجرایی

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

جلسه 2 جهت تعریف یک فضاي برداري نیازمند یک میدان 2 هستیم. یک میدان مجموعه اي از اعداد یا اسکالر ها به همراه اعمال

به نام خدا. الف( توضیح دهید چرا از این تکنیک استفاده میشود چرا تحلیل را روی کل سیگنال x[n] انجام نمیدهیم

عنوان: رمزگذاري جستجوپذیر متقارن پویا

فعالیت = ) ( )10 6 ( 8 = )-4( 3 * )-5( 3 = ) ( ) ( )-36( = m n m+ m n. m m m. m n mn

فصل دوم مثلثات نسبت های مثلثاتی دایره مثلثاتی روابط بین نسبتهای مثلثاتی

Beta Coefficient نویسنده : محمد حق وردی

به نام ستاره آفرین قضیه ویریال جنبشی کل ذرات یک سیستم پایدار مقید به نیرو های پایستار را به متوسط انرژی پتانسیل کل شان

باشند و c عددی ثابت باشد آنگاه تابع های زیر نیز در a پیوسته اند. به شرطی که g(a) 0 f g

ک ت اب درس ی ن ظ ری ه گ راف ب الاک ری ش ن ان و ران گ ان ات ه ان (ح ل ت ع دادي از ت م ری ن ه اي ف ص ل ه اي 4 و 5) دک ت ر ب ی ژن ط اي ري

ارزیابی بهره وری متقاطع DEA بر پایه بهبود پارتو

6- روش های گرادیان مبنا< سر فصل مطالب

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

شبکه های عصبی در کنترل

جلسه 28. فرض کنید که m نسخه مستقل یک حالت محض دلخواه

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

ندرک درگ ندرک درگ شور

آشنایی با پدیده ماره (moiré)

به نام حضرت دوست. Downloaded from: درسنامه

جلسه 16 نظریه اطلاعات کوانتمی 1 ترم پاییز

خالصه درس: نویسنده:مینا سلیمان گندمی و هاجر کشاورز امید ریاضی شرطی. استقالل متغیر های تصادفی پیوسته x و y استقالل و امید ریاضی

فصل دهم: همبستگی و رگرسیون

هد ف های هفته ششم: 1- اجسام متحرک و ساکن را از هم تشخیص دهد. 2- اندازه مسافت و جا به جایی اجسام متحرک را محاسبه و آن ها را مقایسه کند 3- تندی متوسط

مثلث بندی دلونی فصل 9 مژگان صالحی- دی 92 استاد راهنما: جناب آقای دکتر محمد فرشی

برابری کار نیروی برآیند و تغییرات انرژی جنبشی( را بدست آورید. ماتریس ممان اینرسی s I A

دکتر عباس روحانی دانشکده کشاورزی دانشگاه صنعتی شاهرود

فهرست جزوه ی فصل دوم مدارهای الکتریکی ( بردارها(

تلفات خط انتقال ابررسی یک شبکة قدرت با 2 به شبکة شکل زیر توجه کنید. ژنراتور فرضیات شبکه: میباشد. تلفات خط انتقال با مربع توان انتقالی متناسب

1- مقدمه. 2 Action. 1 Heuristic

هندسه تحلیلی و جبر خطی ( خط و صفحه )

هر عملگرجبر رابطه ای روی يک يا دو رابطه به عنوان ورودی عمل کرده و يک رابطه جديد را به عنوان نتيجه توليد می کنند.

مینامند یا میگویند α یک صفر تابع

فصل سوم جریان های الکتریکی و مدارهای جریان مستقیم جریان الکتریکی

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

فصل چهارم تعیین موقعیت و امتدادهای مبنا

Transcript:

درخت www.snrzvi.ir ۱۳۹۵ سید ناصر رضوی

فهرست مطالب 2 درختها درختهای دودویی پیادهسازی درختها

درخت 3 برای انتزاعی مدل یک درخت. نمایش ساختارهای سلسله مراتبی. Computrs R Us Sls Mnuturin R&D US Intrntionl Lptops Dsktops Europ Asi Cn

درخت 4 در علوم محاسباتی درخت یک مدل انتزاعی برای نمایش ساختارهای سلسلهمراتبی است. یک درخت شامل گرههایی است که بین آنها روابط پدر- فرزندی برقرار است )ساختار غیر خطی( به جز باالترین عنصر )ریشه( هر عنصر دقیقا یک پدر دارد. همچنین هر عنصر در درخت میتواند صفر یا چند فرزند داشته باشد. مثال یک معروف. شجره نامه های خانوادگی برخی از کاربردها. چارتهای سازمانی سیستمهای فایل محیطهای برنامهنویسی

اصطالحات و تعاریف 5 والد بدون گره ریشه. )A( A گره داخلی. گرهای که حداقل یک فرزند دارد. (F,A),B,C برگ. ]گره خارجی[ گره بدون فرزند. K) (D, E, G, H, I, J, B C D گرههای هم نیا. گرههایی که والد یکسان دارند. (K,I),J عمق گره. طول مسیر از ریشه تا آن گره. E F G H... ارتفاع اجداد درخت. حداکثر عمق گرهها در درخت. یک گره. پدر پدر بزرگ پدر پدر بزرگ و I J K... و فرزند فرزند فرزند گره. یک نسلهای

تعریف رسمی درخت )تعریف بازگشتی( 6 درخت. یک مجموعهی محدود از گرهها با ویژگیهای زیر است: اگر تهی نباشد دارای یک گره خاص به نام ریشه است. سایر گرهها به مجموعهها خود یک k 0 مجموعهی مجزا درخت هستند. مانند... T 2 T 1 [ 1 T 2 T... و T k را و T k تقسیم میشوند به گونهای زیردرختهای ریشه مینامیم[ این از یک هر که r T 1 T 2 T k

کاربرد درخت ها 7 نمایش ساختار کتاب. یک Book Pr Prt A Prt B Rrns Ch. 1 Ch. 5 Ch. 6 Ch. 9 S. 1.1 S. 1.4 S. 5.1 S. 5.7 S. 6.1 S. 6.5 S. 9.1 S. 9.6

کاربرد درخت ها 8 نمایش ساختار یک سیستم فایل.

درخت مرتب 9 درخت مرتب. یک درخت مرتب است اگر به ازای هر گره یک ترتیب خطی بر روی فرزندان گره تعریف شده باشد. آن در یک درخت مرتب میتوان به فرزندان یک گره به صورت فرزند اول فرزند دوم و... ارجاع نمود. در درختهای مرتب فرزندان یک گره بر اساس ترتیبی که دارند از چپ به راست قرار داده میشوند.. مثال. شجره نامه های خانوادگی درخت های و مربوط به ساختار کتاب ها

روشهای پیمایش درخت 10 r T 1 T 2 T k Prorr(T) : r, Pr(T 1 ), Pr(T 2 ),, Pr(T k ) Inorr(T) : In(T 1 ), r, In(T 2 ),, In(T k ) Postorr(T) : Post(T 1 ), Post(T 2 ),, Post(T k ), r

مثال: پیمایش پیش ترتیب 11 T 1 i j l T 4 h k T 2 T 3 Prorr: h i k j l T 1 T 2 T 3 T 4

مثال: پیمایش میان ترتیب 12 T 1 i j l T 4 h k T 2 T 3 Inorr: h k i j l T 1 T 2 T 3 T 4

مثال: پیمایش پس ترتیب 13 T 1 i j l T 4 h k T 2 T 3 Postorr: h k i j l T 1 T 2 T 3 T 4

پیمایش پیش ترتیب درخت عمومی 14 puli Itrl<Itm> prorr() Quu<Itm> q = nw Quu<Itm>(); prorr(root, q); rturn q; puli voi prorr(no x, Quu<Itm> q) q.nquu( x.itm ); No y = x.lm; whil (y!= null) prorr(y, q); y = y.rs; privt lss No privt Itm itm; privt No prnt; privt No lm; privt No rs;

پیمایش میان ترتیب عمومی درخت )غیر بازگشتی( 15 puli voi inorr(no x, Quu<Itm> q) No y = x.lm; i (y!= null) inorr(y, q); q.nquu(x.itm); y = y.rs; whil (y!= null) inorr(y, q); y = y.rs; ls q.nquu(x.itm);

پیمایش پس ترتیب درخت عمومی 16 puli Itrl<Itm> postorr() Quu<Itm> q = nw Quu<Itm>(); postorr(root, q); rturn q; puli voi postorr(no x, Quu<Itm> q) No y = x.lm; whil (y!= null) postorr(y, q); y = y.rs; q.nquu(x.itm);

پیاده سازی درخت عمومی )روش بد( 17 پیاده سازی گره ها. یک فیلد برای ذخیرهی اطالعات )برچسب( k فیلد اشارهگر برای ذخیرهی آدرس فرزندان itm Chil 1 Chil 2 Chil 3 Chil k n * k n 1 ایراد روش این پیاده سازی. تعداد کل فیلدهای اشارهگر به فرزندان: تعداد فیلدهای اشارهگر غیر پوچ: تعداد اشارهگر پوچ برابر است با: nk (n 1) = n (k 1) + 1

پیاده سازی چپ ترین فرزند-برادر راست (LMC-RSB) 18 است: آدرس فیلد دارای سه گره هر روش این در پدر آدرس ذخیره ی برای یکی ذخیره ی برای یکی آدرس چپ فرزند ترین راست برادر ترین نزدیک آدرس ذخیره ی برای یکی i j l LMC-RSB i j l h k h k

مثال: محاسبه ی گره های تعداد یک درخت LMC-RSB 19 puli int siz() rturn siz(root); privt int siz(no x) i (x == null) rturn 0; int ount = 1; No y = x.lm; whil (y!= null) ount += siz(y); y = y.rs; rturn ount;

مثال: محاسبه ی ارتفاع یک درخت LMC-RSB 20 puli int hiht() rturn hiht(root); privt int hiht(no x) i (x == null) rturn -1; int h = -1; No y = x.lm; whil (y!= null) h = Mth.mx(h, hiht(y)); y = y.rs; rturn 1 + h;

تمرین: محاسبه ی برگهای تعداد یک درخت LMC-RSB 21 puli int numlvs() rturn numlvs(root); privt int numlvs(no x)...

درخت دودویی

درخت دودویی )تعریف بازگشتی( 23 درخت دودویی. یا تهی است و یا حاوی مجموعهی محدودی از گرهها شامل دودویی است. این درختها زیردرختهای چپ و راست نامیده میشوند. درخت دو و ریشه r تفاوتهای درخت دودویی با درخت عمومی: درخت دودویی میتواند تهی باشد. در درخت دودویی ترتیب فرزندان اهمیت دارد. T l T r

خواص درخت های دودویی 24 ها گره تعداد حداکثر i با: است برابر ام در سطح 2 i 1 0 2 0 2 1 2 1 3 4 5 2 2 2 6 7 8 9 10 11 12 3 2 3 13 14 15 2 i : گره ها تعداد حداکثر با است برابر در سطح i 2 h + 1-1 : ارتفاع h با است برابر با دودویی درخت یک در گره ها تعداد حداکثر h n = 2 i = 2 0 + 2 1 + + 2 h = 2 h+1 1 i=0

نمایش درخت دودویی به وسیله ی آرایه 25 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 9 8 9 10 10 11 11 12 12 13 14 13 15 14 15 (i > 1) (2i n) (2i + 1 n) ریشه ۱ یک اگر پدر در خانه ی آن گره گره قرار در خانه i در خانه ی دارد. آنگاه: باشد ام Τ i 2 فرزند چپ 2i راست فرزند آن آن در خانه ی در خانه ی + 1 2i

نمایش درخت دودویی به وسیله آرایه 26 1 2 3 4 5 7 8 h 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 h

نمایش درخت دودویی به وسیله آرایه 27 1 درخت مورب راست 1 درخت مورب چپ 2 3 4 7 8 h 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 h

معایب پیاده سازی درخت دودویی به آرایه وسیله ی 28 اتالف حافظه. + 1 h خانه این روش فقط برای درختهای دودویی پر و تقریبا در بدترین حالت یک درخت مورب به ارتفاع h به استفاده میشود و بقیهی خانهها خالی میمانند. است. مناسب پر فقط تعداد این از که دارد نیاز خانه 2 h+1-1 کند بودن عمل درج و حذف. در این روش درج و حذف یک حذف میگردد. به جابجایی نیاز گره و درج عمل کندی باعث مسئله این که دارد دیگر گره های

پیاده سازی درخت دودویی به وسیله ی اشاره گر 29 تعریف جاوا. است. ریشه گره به ارجاع یک دودویی درخت privt lss No privt Itm itm; privt No lt, riht; puli No(Itm itm) this(itm, null, null); lt itm riht puli No(Itm itm, No lt, No riht) this.itm = itm; this.lt = lt; this.riht = riht;

پیمایش درخت دودویی پیمایش پیش ترتیب پیمایش میان ترتیب پیمایش پس ترتیب پیمایش به ترتیب سطح ترسیم درخت دودویی به کمک پیمایش های آن

روشهای پیمایش درخت دودویی 31 r T l T r Prorr(T) : r, prorr(t l ), prorr(t r ) Inorr(T) : inorr(t l ), r, inorr(t r ) Postorr(T) : postorr(t l ), postorr(t r ), r

مثال: پیمایش درخت دودویی 32 h prorr(t) :,,,,, h,, inorr(t) :,,,, h,,, postorr(t) :,, h,,,,,

پیمایش پیش ترتیب درخت دودویی 33 puli Itrl<Itm> prorr() Quu<Itm> q = nw Quu<Itm>(); prorr(root, q); rturn q; privt voi prorr(no x, Quu<Itm> q) i (x == null) rturn; q.nquu(x.itm); prorr(x.lt, q); prorr(x.riht, q);

پیمایش میان ترتیب درخت دودویی 34 puli Itrl<Itm> inorr() Quu<Itm> q = nw Quu<Itm>(); inorr(root, q); rturn q; privt voi inorr(no x, Quu<Itm> q) i (x == null) rturn; inorr(x.lt, q); q.nquu(x.itm); inorr(x.riht, q);

پیمایش پس ترتیب درخت دودویی 35 puli Itrl<Itm> postorr() Quu<Itm> q = nw Quu<Itm>(); postorr(root, q); rturn q; privt voi postorr(no x, Quu<Itm> q) i (x == null) rturn; postorr(x.lt, q); postorr(x.riht, q); q.nquu(x.itm);

پیمایش میان ترتیب درخت دودویی: غیربازگشتی 36 privt NR-Inorr(No x) Stk<No> s = nw Stk<No>(); ooln on = ls; whil (!on) whil (x!= null) s.push(x); x = x.lt; i (!s.isempty()) x = s.pop(); StOut.print(x.itm); x = x.riht; h ls on = tru;

پیمایش درخت دودویی به ترتیب سطح 37 privt voi lvlorr() i (isempty()) rturn; Quu<Itm> q = nw Quu<Itm>(); q.nquu(root); whil (!q.isempty()) No x = q.quu(); StOut.print(x.itm + ); i (x.lt!= null) q.nquu(x.lt); i (x.riht!= null) q.nquu(x.riht); پیمایش به ترتیب سطح. 1 2 3 4 5 6 7 h 8

پیمایش درخت دودویی به ترتیب سطح 38 privt voi lvlorr() ترتیب سطح. به پیمایش i (isempty()) rturn; Quu<Itm> q = nw Quu<Itm>(); q.nquu(root); x whil (!q.isempty()) No x = q.quu(); StOut.print(x.itm + ); i (x.lt!= null) q.nquu(x.lt); i (x.riht!= null) q.nquu(x.riht); h

پیمایش درخت دودویی به ترتیب سطح 39 privt voi lvlorr() ترتیب سطح. به پیمایش i (isempty()) rturn; Quu<Itm> q = nw Quu<Itm>(); q.nquu(root); whil (!q.isempty()) x No x = q.quu(); StOut.print(x.itm + ); i (x.lt!= null) q.nquu(x.lt); i (x.riht!= null) q.nquu(x.riht); h

پیمایش درخت دودویی به ترتیب سطح 40 privt voi lvlorr() ترتیب سطح. به پیمایش i (isempty()) rturn; Quu<Itm> q = nw Quu<Itm>(); q.nquu(root); whil (!q.isempty()) x No x = q.quu(); StOut.print(x.itm + ); i (x.lt!= null) q.nquu(x.lt); i (x.riht!= null) q.nquu(x.riht); h

پیمایش درخت دودویی به ترتیب سطح 41 privt voi lvlorr() ترتیب سطح. به پیمایش i (isempty()) rturn; Quu<Itm> q = nw Quu<Itm>(); q.nquu(root); whil (!q.isempty()) No x = q.quu(); StOut.print(x.itm + ); i (x.lt!= null) q.nquu(x.lt); x i (x.riht!= null) q.nquu(x.riht); h

پیمایش درخت دودویی به ترتیب سطح 42 privt voi lvlorr() ترتیب سطح. به پیمایش i (isempty()) rturn; Quu<Itm> q = nw Quu<Itm>(); q.nquu(root); whil (!q.isempty()) No x = q.quu(); StOut.print(x.itm + ); i (x.lt!= null) q.nquu(x.lt); x i (x.riht!= null) q.nquu(x.riht); h

پیمایش درخت دودویی به ترتیب سطح 43 privt voi lvlorr() ترتیب سطح. به پیمایش i (isempty()) rturn; Quu<Itm> q = nw Quu<Itm>(); q.nquu(root); whil (!q.isempty()) No x = q.quu(); StOut.print(x.itm + ); i (x.lt!= null) q.nquu(x.lt); x i (x.riht!= null) q.nquu(x.riht); h h

پیمایش درخت دودویی به ترتیب سطح 44 privt voi lvlorr() ترتیب سطح. به پیمایش i (isempty()) rturn; Quu<Itm> q = nw Quu<Itm>(); q.nquu(root); whil (!q.isempty()) No x = q.quu(); StOut.print(x.itm + ); i (x.lt!= null) q.nquu(x.lt); i (x.riht!= null) q.nquu(x.riht); x h h

پیمایش درخت دودویی به ترتیب سطح 45 privt voi lvlorr() ترتیب سطح. به پیمایش i (isempty()) rturn; Quu<Itm> q = nw Quu<Itm>(); q.nquu(root); whil (!q.isempty()) No x = q.quu(); StOut.print(x.itm + ); i (x.lt!= null) q.nquu(x.lt); i (x.riht!= null) q.nquu(x.riht); h x h h

پیمایش درخت دودویی به ترتیب سطح 46 privt voi lvlorr() ترتیب سطح. به پیمایش i (isempty()) rturn; Quu<Itm> q = nw Quu<Itm>(); q.nquu(root); whil (!q.isempty()) No x = q.quu(); StOut.print(x.itm + ); i (x.lt!= null) q.nquu(x.lt); i (x.riht!= null) q.nquu(x.riht); h h

مسئله: رسم درخت دودویی به کمک پیمایش های آن 47 pr h in h h h

مسئله: رسم درخت دودویی به کمک پیمایش های آن 48 pr h in h h h

مسئله: رسم درخت دودویی به کمک پیمایش های آن 49 pr h in h h h

مسئله: رسم درخت دودویی به کمک پیمایش های آن 50 pr h in h h h

مسئله: رسم درخت دودویی به کمک پیمایش های آن 51 pr h in h h h

مسئله: رسم درخت دودویی به کمک پیمایش های آن 52 pr h in h h h

مسئله: رسم درخت دودویی به کمک پیمایش های آن 53 pr h in h h

مسئله: رسم درخت دودویی به کمک پیمایش های آن 54 pr h in h pos h h بنابراین با داشتن پیمایش Inorr و حداقل یکی از پیمایش های دیگر درخت دودویی قابل ترسیم است. Postorr Prorr پیمایش داشتن اما با و درخت دودویی به صورت یکتا قابل ترسیم نیست. چرا

مثال: کپی کردن یک درخت دودویی 55 puli BinryTr<Itm> opy() BinryTr<Itm> T = nw BinryTr<Itm>(); T.root = opy(root); rturn T; privt No opy(no x) i (x == null) rturn null; No y = nw No(x.itm); y.lt = opy(x.lt ); y.riht = opy(x.riht); rturn y;

تمرین 56 زیردرخت دو تساوی بررسی منظور به زیر به صورت تابعی دودویی بنویسید. privt ooln quls(no x, No y) تابعی به صورت چپ و راست آن زیر گره بنویسید به طوری که را با هم تعویض نماید. زیردرخت دو جای دودویی درخت در گره هر برای privt No swp(no x)

درخت نخی دودویی 57 انگیزه. استفاده ی فیلدهای از هوشمند پوچ. اشاره گر n + 1 n 1 در یک درخت دودویی با n گره 2n فیلد دارای مقدار پوچ هستند. که طوری به دارد وجود اشاره گر فیلد و پوچ غیر فیلد یک )در بعدی گره به می تواند پوچ فیلد هر پیمایش خاص( کند. اشاره T A B C D E F G H I

پیاده سازی درخت نخی دودویی 58 privt lss No privt Itm itm; privt No lt; privt No riht; privt ooln ltthr; privt ooln rihtthr;... lt itm riht

درخت عبارت

درخت عبارت 60 پرانتزی. کامال عبارت E ::= (α E) (E β E) ::= vril α ::= unry oprtor [~, lo, sin, os, ] β ::= inry oprtor [^,, /, +, -, ] مثال. ( ~ ( + ( ( / ) * ( ^ ) ) ) )

درخت عبارت 61 است. درخت از استفاده ریاضی عبارت یک برای مدل بهترین ~ + * ( ~ ( + ( ( / ) * ( ^ ) ) ) ) / ^ نکته. پیمایشهای پیشترتیب میانترتیب میانوندی و پسوندی عبارت هستند. پس ترتیب و فرمهای معادل ترتیب به عبارت درخت پیشوندی

تبدیل عبارت کامال پرانتزی به درخت عبارت 62 E.T. α α E 1 E.T. T 1 β E 1 β E 2 E.T. T 1 T 2

الگوریتم تبدیل عبارت کامال پرانتزی به درخت عبارت 63 privt No xprssiontr(strin[], int lo, int hi) i (lo == hi) rturn Nw No([lo]); ls i (unryops.ontins([lo + 1])) No x = nw No([lo + 1]); x.riht = xprssiontr(, lo + 2, hi - 1); rturn x; ls int k = mth(, lo + 1); No x = nw No([k + 1]); x.lt = xprssiontr(, lo + 1, k); x.riht = xprssiontr(, k + 2, hi 1); rturn x;

الگوریتم تبدیل عبارت کامال پرانتزی به درخت عبارت 64 privt int mth(strin[], int lo) int ount = 0; int j = lo; whil (tru) i ([j].quls( ( )) ount++; ls i ([j].quls( ) )) ount--; j++; i (ount == 0) rk; rturn j 1; 1 2 1 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ( ~ ( + ( ( / ) * ( ^ ) ) ) ) lo hi

حالت 2 65 ls i (unryops.ontins([lo + 1])) No x = nw No([lo + 1]); x.riht = xprssiontr(, lo + 2, hi - 1); rturn x; α T 1 lo lo+1 lo+2 hi-1 hi ( α E 1 )

حالت ۳ 66 ls int k = mth(, lo + 1); No x = nw No([k + 1]); x.lt = xprssiontr(, lo + 1, k); x.riht = xprssiontr(, k + 2, hi 1); rturn x; β T 1 T 2 lo lo+1 k k+1 k+2 hi-1 hi ( E 1 β E 2 )

تمرین: ایجاد درخت عبارت از روی فرم پسوندی 67 E.T. α E 1 α E.T. T 1 β E 1 E 2 β E.T. T 1 T 2

تبدیل درخت عبارت به فرم کامال پرانتزی 68 puli voi printinix(no x); i (unryops.ontins(x.itm)) StOut.print( ( + x.itm); printinix(x.riht); StOut.print( ) ); ls i (inryops.ontins(x.itm)) StOut.print( ( ); printinix(x.lt); StOut.print(x.itm); printinix(x.riht); StOut.print( ) ); ls StOut.print(x.itm);

الگوریتم فشرده سازی هافمن 69 مسئله. کاراکترها. از یک هر وقوع احتمال و کاراکتر تعدادی ورودی: کدهای خروجی: طوری به کاراکترها که ضریب فشرده سازی حداقل شود. اندازه فایل فشرده شده اندازه فایل اصلی = ضریب فشرده سازی مثال. کاراکتر 5 3 6 1 8 2 4 فراوانی

طرح اول برای کد گذاری: کد دودویی با طول ثابت 70 روش این در اگر n میدهیم: نسبت زیر ثابت با طول دودویی کد یک کدام هر به باشیم داشته مختلف کاراکتر کد دودویی با طول ۳ فراوانی کاراکتر 5 000 = طول کد l n + 1 3 001 6 010 محاسبه ی کد شده فایل اندازه ی [ رب بیت[: حسب 1 011 8 100 3 5 + 3 + 6 + 1 + 8 + 4 + 2 = 87 its 2 101 کلمه کد 4 110 کتاب کد

طرح دوم برای کد گذاری: کد دودویی با طول متغیر 71 برای کمتر با طول کد کلمات از استفاده انگیزه. دارند. بیشتری فراوانی که کاراکترهایی راه حل. استفاده از روش کدگذاری هافمن: مرحله ۱( به ازای هر کاراکتر یک درخت دودویی کاراکتر مربوطه قرار میدهیم. احتمال با برابر را درخت آن ریشه ی وزن و ایجاد گره ای تک 1 2 3 4 5 6 8

روش کد گذاری هافمن 72 n 1 مرحله 2( کن: تکرار بار را زیر عملیات هر بار دو درخت و T 1 T 2 را که ریشه آنها دارای کمترین وزنهای و w 1 w 2 یک درخت برابر با دودویی جدید ایجاد قرار میدهیم. چپ زیردرختان T 2 و T 1 که می کنیم هستند انتخاب میکنیم. و راست آن باشند و وزن ریشهی را آن w 1 + w 2 w 1 + w 2 w 1 w 2 T 1 T 2

روش کد گذاری هافمن: مرحله 2 73 1 2 3 4 5 6 8

روش کد گذاری هافمن: مرحله 2 74 3 3 4 5 6 8 1 2

روش کد گذاری هافمن: مرحله 2 75 6 4 5 6 8 3 3 1 2

روش کد گذاری هافمن: مرحله 2 76 4 5 6 6 8 3 3 1 2

روش کد گذاری هافمن: مرحله 2 77 9 6 6 8 4 5 3 3 1 2

روش کد گذاری هافمن: مرحله 2 78 6 6 8 9 3 3 4 5 1 2

روش کد گذاری هافمن: مرحله 2 79 12 8 9 6 6 4 5 3 3 1 2

روش کد گذاری هافمن: مرحله 2 80 8 9 12 4 5 6 6 3 3 1 2

روش کد گذاری هافمن: مرحله 2 81 17 12 8 9 6 6 4 5 3 3 1 2

روش کد گذاری هافمن: مرحله 2 82 12 17 6 6 8 9 3 3 4 5 1 2

روش کد گذاری هافمن: مرحله 2 83 29 12 17 6 6 8 9 3 3 4 5 1 2

و) روش کد گذاری هافمن 84 ۳( کاراکترها. کد تولید مرحله به شاخه های چپ به شاخه های و برچسب برعکس( یا برچسب راست می دهیم. 1 0 0 0 1 0 1 0 1 0 1 0 1 1 76 87 کد هافمن کاراکتر 111 001 01 0000 10 0001 110 ضریب فشرده سازی =

یک قضیه مرتبط 85 دارای برگ گره با کامل دودویی درخت یک قضیه. 1 n گره است. داخلی n n روی استقرا طریق از اثبات. ازای به استقرا پایه = 1 n است برقرار تعداد برگها: n تعداد گره های داخلی: - 1 n

یک قضیه مرتبط 86 دارای برگ گره با کامل دودویی درخت یک قضیه. 1 n گره است. داخلی n n روی استقرا طریق از اثبات. ازای به استقرا پایه = 1 n است برقرار تعداد برگها: + 1 n تعداد گره های داخلی: n

2 نکته در مورد روش کد گذاری هافمن 87 هافمن. کد بهینگی کدگذاری روش این با یعنی است بهینه هافمن روش ضریب فشرده سازی حداقل می شود. خاصیت پیشوندی. کدهای به دست آمده خاصیت پیشوندی دارند یعنی در کتاب کد هیچ کلمهی کدی پیشوند کلمهی کد دیگری نیست. در نتیجه رمزگشایی با یک بار پویش فایل رمز شده به سادگی قابل انجام است. مثال. رشته ی 0001111000010 رمزگشایی را نمایید.

رمزگشایی 88 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0

پیاده سازی الگوریتم هافمن 89 الگوریتم تمرین. فشرده سازی پیاده سازی را هافمن نمایید. root wiht symol pro l lt riht prnt 1 2 1 2 1 2........................ n n 2n-1 FOREST ALPHABET TREE