اسلایدهای جلسه دهم و یازدهم (درخت) – ۵ دی ۹۲

Download Report

Transcript اسلایدهای جلسه دهم و یازدهم (درخت) – ۵ دی ۹۲

‫‪ ‬پیمایش یعنی مالقات )‪ (visit‬همه گره‌های یک درخت ‌بر اساس روش ی خاص‪.‬‬
‫بار دسترس ی داشته باشیم‪.‬‬
‫هر گره فقط یک ‌‬
‫در پیمایش می‌خواهیم به ‌‬
‫‪‌ ‬‬
‫در د ‌و حالت عمقی (‪ )DFS‬و سطحی (‪ )BFS‬انجام‬
‫‪ ‬به طور‌ کلی پیمایش درختان ‌‬
‫می‌شود‪.‬‬
‫‪ ‬برای پیمایش از نمادهای ز ‌یر استفاده می‌کنیم‪:‬‬
‫‪ :V‬مالقات ‪ : L‬فرزند چپ ‪ :R‬فرزند راست‬
‫چهار پیمایش را بررس ی می‌کنیم‪:‬‬
‫‪ ‬در مجموع ‌‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪2‬‬
‫پیمایش ‪VLR : PreOrder‬‬
‫پیمایش ‪LVR : InOrder‬‬
‫پیمایش ‪LRV : PostOrder‬‬
‫پیمایش سطحی ‪LevelOrder‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫‪ ‬پیمایش ‪ :preorder‬ابتدا ریشه درخت مالقات شده ‌و سپس ز ‌یر‬
‫درخت سمت چپ ‌و پس ‌از آن ز ‌یر درخت سمت راست پیمایش می‌شود‪.‬‬
‫در صورت وجود به همین‬
‫نیز ‌‬
‫هر یک از ز ‌یر درختان سمت چپ ‌و راست ‌‬
‫‌‬
‫روش پیمایش می‌شوند‪.‬‬
‫‪VLR : ABDHJEKLCFMNGOP‬‬
‫‪3‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫‪ ‬پیمایش ‪ :postorder‬ابتدا ز ‌یر درخت سمت چپ ‌و سپس ز ‌یر‬
‫درخت سمت راست پیمایش شده ‌و پس ‌از آن ریشه مالقات می‌شود‪.‬‬
‫در صورت وجود به‬
‫نیز ‌‬
‫هر یک ‌از ز ‌یر درختان سمت چپ ‌و راست ‌‬
‫همین روش پیمایش می‌شوند‪.‬‬
‫‪LRV : POGNMFCLKEJHDBA‬‬
‫‪4‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫‪ ‬پیمایش ‪ :inorder‬ابتدا ز ‌یر درخت سمت چپ پیمایش می‌شود‪،‬‬
‫پس ‌از آن ریشه درخت مالقات شده ‌و سپس ز ‌یر درخت سمت راست‬
‫در‬
‫نیز ‌‬
‫هر یک از ز ‌یر درختان سمت چپ ‌و راست ‌‬
‫پیمایش می‌شود‪‌ .‬‬
‫صورت وجود به همین روش پیمایش می‌شوند‪.‬‬
‫‪5‬‬
‫‪LVR : PGOCNFMALEKBJDH‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫‪ ‬گره های درخت به ترتیب سطح ‌و چپ به راست مالقات می‌شوند‪.‬‬
‫‪LevelOrder : ABCDEFGHJKLMNOP‬‬
‫‪6‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
.‫ انواع پیمایش را روی درخت زیر انجام دهید‬
LVR: DCBFEAHNMIG
A
LRV: DCFEBNMIHGA
B
C
D
G
E
H
VLR: ABCDEFGHIMN
LevelOrder : ABGCEHDFIMN
I
F
M
N
‫درخت‬
92/10/05 ،‫جلسه دهم و یازدهم‬
7
‫هر عبارت محاسباتی به صورت ز ‌یر عمل می‌کنیم‪:‬‬
‫‪ ‬برای تشکیل درخت ‌‬
‫‪ ‬ابتدا عبارت را برحسب اولویت عملگرها اولویت بندی می‌کنیم‪.‬‬
‫‪ ‬ریشه درخت‪ ،‬کمترین اولویت را دارد‪.‬‬
‫در چپ ‌و‬
‫عملگر ‌‬
‫‌‬
‫‪ ‬ریشه زیردرختان چپ ‌و راست به ترتیب کم اولویت ترین‬
‫راست ریشه درخت است‪.‬‬
‫‪ ‬برگهای درخت عملوندها هستند‪.‬‬
‫‪ ‬برای تبدیل عبارات میانوندی به پسوندی با استفاده ‌از درخت محاسباتی‪ ،‬از‬
‫پیمایش ‪ postOrder‬درخت استفاده می‌کنیم‪.‬‬
‫‪ ‬برای تبدیل عبارات میانوندی به پیشوندی با استفاده ‌از درخت محاسباتی‪‌ ،‬از‬
‫پیمایش ‪ preOrder‬درخت استفاده می‌کنیم‪.‬‬
‫‪8‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬

a*b–c/d

a * b ^ c – d / (e + f)
–
–
*
a

*
/
b
c
a
d
a – b * c / d ^ (e – f)
+
c
e
f
/
a
^
*
‫درخت‬
d
^
b
–
b
/
c
d
–
e
f
92/10/05 ،‫جلسه دهم و یازدهم‬
9
‫‪ ‬یک درخت دودویی است که می‌تواند تهی باشد و اگر نباشد دارای خصوصیات‬
‫ز ‌یر است‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫هر عنصر دارای یک کلید منحصر به فرد است‪ ( .‬کلید تکراری نداریم)‬
‫مقدار کلید های زیر درخت سمت چپ (در صورت وجود) کمتر از کلید ریشه است‪.‬‬
‫مقدار کلید های زیر درخت سمت راست ( در صورت وجود) بیشتر از ریشه است‪.‬‬
‫زیر درخت های سمت چپ و سمت راست نیز درختان جستجوی دودویی هستند‪.‬‬
‫‪30‬‬
‫‪10‬‬
‫‪86‬‬
‫‪92‬‬
‫‪67‬‬
‫‪15‬‬
‫‪53‬‬
‫‪1‬‬
‫‪58‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫‪42‬‬
‫‪‬‬
‫در درخت وجود ندارد‪.‬‬
‫عنصر تکراری‌ ‌‬
‫‌‬
‫هیچ‬
‫‪‬‬
‫عناصر را به صورت مرتب شده‬
‫‌‬
‫هر درخت ‪BST‬‬
‫پیمایش ‪‌ )LVR( inorder‬‬
‫صعودی نشان می‌دهد‪.‬‬
‫با شروع ‌از ریشه درخت ‌و حرکت به سمت چپ تا رسیدن به گرهی که سمت‬
‫در درخت مینیمم‬
‫مقدار آن ‌‬
‫‌‬
‫چپ آن گره تهی است‪ ،‬به گرهی می‌رسیم که‬
‫است‪.‬‬
‫با شروع ‌از ریشه درخت ‌و حرکت به سمت راست تا رسیدن به گرهی که‬
‫در درخت‬
‫مقدار آن ‌‬
‫‌‬
‫سمت راست آن گره تهی است‪ ،‬به گرهی می‌رسیم که‬
‫ماکزیمم است‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪11‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫حداکثر‬
‫‌‬
‫آغاز شده ‌و‬
‫در درخت ‪ BST‬جستجو می باشد که ‌از ریشه ‌‬
‫مهمترین عمل ‌‬
‫ی دودویی به‬
‫در داخل درخت جستجو ‌‬
‫تا عمق درخت ادامه می‌یابد‪ .‬جستج ‌و ‌‬
‫صورت ز ‌یر انجام می‌شود‪:‬‬
‫اگر ریشه موجود نباشد جستجو ناموفق است‪.‬‬
‫‪‌ ‬‬
‫آمیز خاتمه می‌یابد‪.‬‬
‫ابر باشد جستج ‌و به صورت موفق ‌‬
‫اگر کلید مورد جستج ‌و با کلید ریشه بر ‌‬
‫‪‌ ‬‬
‫در‬
‫در ز ‌یر درخت سمت چپ ‌و ‌‬
‫جستجو ‌‬
‫‌‬
‫کوچکتر ‌از ریشه باشد‬
‫‌‬
‫اگر کلید مورد جستج ‌و‬
‫غیر این صورت ‌‬
‫در ‌‬
‫‪‌ ‬‬
‫در ز ‌یر درخت سمت راست به شیوه فوق‌ ادامه می‌یابد‪.‬‬
‫غیر این صورت ‌‬
‫‌‬
‫‪‬‬
‫در ریشه‬
‫عنصر مورد جستجو ‌‬
‫‌‬
‫در صورتی که‬
‫حداقل مقایسه‪ ،‬یک مقایسه خواهد بود ‌‬
‫در صورتی که عنصرمور‌د‬
‫باشد‪ .‬حداکثر مقایسه به اندازه عمق درخت خواهد بود ‌‬
‫جستجو یکی ‌از عناصر گره‌ها در پایین‌ترین سطح باشد‪.‬‬
‫در یک درخت جستجوی‌ دودویی با ‪ n‬گره‪ ،‬به طور‌ متوسط ‪ log2 n‬مقایسه انجام‬
‫‌‬
‫می‌شود‪.‬‬
‫‪‬‬
‫در یک درخت ‪ BST‬اریب با ‪ n‬گره‪ ،‬حداقل ‪‌ 1‬و حداکثر ‪ n‬مقایسه خواهیم داشت‪.‬‬
‫‌‬
‫‪‬‬
‫‪12‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫‪ ‬جستجو به دنبال داده ها‬
‫‪ ‬حذف داده های تکراری از لیست ها‬
‫‪ ‬مرتب سازی (‪ )sort‬لیست ها با پیمایش ‪)LVR( inorder‬‬
‫‪13‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫عنصر ابتدا‪ ،‬عمل جستج ‌و برای گره مورد درج باید انجام شود تا‬
‫‌‬
‫برای درج یک‬
‫در درخت ‪ BST‬وجود نداشته باشد‪ ،‬چون‌ در ‪BST‬‬
‫نظر ‌‬
‫مطمئن شویم گره مورد ‌‬
‫در این وضعیت‪ ،‬دو حالت پیش می‌آید‪:‬‬
‫عنصر تکراری‌ وجود ندارد‪‌ .‬‬
‫‌‬
‫در درخت پیدا شود‪ ،‬در این صورت قابل درج نیست ‌و ‌از‬
‫اگر کلید مورد درج ‌‬
‫‪‌ ‬‬
‫ی بودن)‬
‫لیست ورودی حذف می شود‪( .‬به دلیل تکرار ‌‬
‫در این صورت ‌بر حسب آنکه کوچک ‌تر‬
‫در درخت پیدا نشود‪‌ ،‬‬
‫اگر کلید مورد درج ‌‬
‫‪‌ ‬‬
‫جستجو است‪ ،‬به عنوان فرزند سمت‬
‫‌‬
‫مقدار کلید آخرین گره مورد‬
‫‌‬
‫گتر ‌از‬
‫یا بزر ‌‬
‫چپ یا راست آن درج می‌شود‪.‬‬
‫آغاز شده ‌و سعی داریم درخت‪ ،‬حالت‬
‫دقت کنید برای درج هر گره‪ ،‬مقایسه ‌از ریشه ‌‬
‫‪ BST‬بودن خود را حفظ کند‪.‬‬
‫‪14‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫درج‬
‫ی دودویی ‌‬
‫در یک درخت جستجو ‌‬
‫‪ ‬کلیدهای ز ‌یر را ‌از چپ به راست ‌‬
‫کنید‪.‬‬
‫‪30 , 86 , 67 , 53 , 10 , 58 , 92 , 42 , 15‬‬
‫‪30‬‬
‫‪10‬‬
‫‪86‬‬
‫‪92‬‬
‫‪67‬‬
‫‪15‬‬
‫‪53‬‬
‫‪42‬‬
‫‪58‬‬
‫‪15‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫در این‬
‫جستجو انجام گیرد‪‌ .‬‬
‫‌‬
‫عنصر ‌از درخت ‪ BST‬باید ابتدا عمل‬
‫‌‬
‫برای حذف‬
‫دو حالت پیش می‌آید‪:‬‬
‫وضعیت ‌‬
‫در این صورت عملی انجام‬
‫نظر برای حذف‪ ،‬در درخت وجود ندارد که ‌‬
‫‪ ‬گره مورد ‌‬
‫نمی‌شود‪.‬‬
‫در این حالت سه وضعیت‬
‫نظر برای حذف ‌از درخت وجود دارد که ‌‬
‫‪ ‬گره مورد ‌‬
‫بررس ی می‌شود‪:‬‬
‫‪16‬‬
‫‪.1‬‬
‫حذف گره برگ‪.‬‬
‫‪.2‬‬
‫حذف گرهی که یک فرزند دارد‪.‬‬
‫‪.3‬‬
‫حذف گرهی که دو فرزند دارد‪.‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫درخت‬
‫بسیار ساده است‪ .‬اشاره‌گر مناسبی ‌از گره پدر ‪ x‬را تهی می‌کنیم‪ .‬اگر ‪x‬‬
‫‌‬
‫‪ ‬این حالت‬
‫فرزند چپ باشد‪ ،‬اشاره‌گر چپ پدر‪ ،‬وگرنه اشاره‌گر راست پدر را تهی می‌کنیم‪.‬‬
‫‪20‬‬
‫‪20‬‬
‫‪40‬‬
‫‪15‬‬
‫‪80‬‬
‫‪30‬‬
‫‪70‬‬
‫‪17‬‬
‫‪37‬‬
‫‪57‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫‪30‬‬
‫‪85‬‬
‫حذف ‪85‬‬
‫‪32‬‬
‫‪70‬‬
‫‪37‬‬
‫‪60‬‬
‫‪65‬‬
‫‪25‬‬
‫‪35‬‬
‫‪50‬‬
‫‪71‬‬
‫‪60‬‬
‫‪65‬‬
‫‪80‬‬
‫‪25‬‬
‫‪35‬‬
‫‪50‬‬
‫‪71‬‬
‫‪40‬‬
‫‪15‬‬
‫‪57‬‬
‫درخت‬
‫‪32‬‬
‫‪ ‬گره حذف شده و فرزند جایگزین آن می شود‪.‬‬
‫‪20‬‬
‫‪20‬‬
‫‪40‬‬
‫‪15‬‬
‫‪80‬‬
‫‪30‬‬
‫‪70‬‬
‫‪85‬‬
‫‪71‬‬
‫‪37‬‬
‫‪57‬‬
‫‪80‬‬
‫‪25‬‬
‫‪35‬‬
‫‪60‬‬
‫‪65‬‬
‫‪18‬‬
‫‪40‬‬
‫حذف ‪50‬‬
‫‪30‬‬
‫‪85‬‬
‫‪32‬‬
‫‪70‬‬
‫‪71‬‬
‫‪25‬‬
‫‪35‬‬
‫‪50‬‬
‫‪37‬‬
‫‪60‬‬
‫‪65‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫‪15‬‬
‫‪57‬‬
‫درخت‬
‫‪32‬‬
‫به د ‌و صورت ممکن است‪:‬‬
‫الف) گره حذف ‌و بزرگترین گره ز ‌یر درخت سمت چپ جایگزین آن می‌شود‪.‬‬
‫‪20‬‬
‫‪20‬‬
‫‪37‬‬
‫‪15‬‬
‫‪80‬‬
‫‪30‬‬
‫‪50‬‬
‫‪85‬‬
‫‪19‬‬
‫‪25‬‬
‫‪35‬‬
‫حذف ‪40‬‬
‫‪57‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫‪30‬‬
‫‪85‬‬
‫‪70‬‬
‫‪37‬‬
‫‪60‬‬
‫‪65‬‬
‫‪25‬‬
‫‪35‬‬
‫‪50‬‬
‫‪71‬‬
‫‪60‬‬
‫‪65‬‬
‫‪80‬‬
‫‪32‬‬
‫‪70‬‬
‫‪71‬‬
‫‪40‬‬
‫‪15‬‬
‫‪57‬‬
‫درخت‬
‫‪32‬‬
‫ب) گره حذف ‌و کوچکترین گره ز ‌یر درخت سمت راست جایگزین آن می‌شود‪.‬‬
‫‪ ‬توجه کنید که بزرگ ترین گره سمت چپ ‌و کوچک ترین گره سمت راست گره م ‌ورد‬
‫نظر‪ ،‬فرزند ندارد یا یک فرزند دارد‪.‬‬
‫‪20‬‬
‫‪20‬‬
‫‪50‬‬
‫‪15‬‬
‫‪80‬‬
‫‪30‬‬
‫‪71‬‬
‫‪60‬‬
‫‪65‬‬
‫‪20‬‬
‫‪37‬‬
‫‪57‬‬
‫‪80‬‬
‫‪25‬‬
‫‪35‬‬
‫‪70‬‬
‫‪85‬‬
‫‪40‬‬
‫حذف ‪40‬‬
‫‪30‬‬
‫‪85‬‬
‫‪32‬‬
‫‪70‬‬
‫‪71‬‬
‫‪25‬‬
‫‪35‬‬
‫‪50‬‬
‫‪37‬‬
‫‪60‬‬
‫‪65‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫‪15‬‬
‫‪57‬‬
‫درخت‬
‫‪32‬‬
‫• ‪:Max Tree‬‬
‫‪:Max Heap‬‬
‫•‬
‫یک درخت دودوئی کامل که ‪ Max Tree‬نیز باشد‪.‬‬
‫درختی که مقدار کلید هر گره در آن‪ ،‬بزرگترمساوی‬
‫مقدار کلید‬
‫‌‬
‫فرزندانش (در صورت وجود) باشد‪.‬‬
‫‪65‬‬
‫‪83‬‬
‫‪83‬‬
‫‪80‬‬
‫‪21‬‬
‫‪75‬‬
‫‪75‬‬
‫‪80‬‬
‫‪34‬‬
‫‪75‬‬
‫‪34‬‬
‫‪75‬‬
‫‪32‬‬
‫‪32‬‬
‫درخت ‪ MaxHeap‬است‬
‫درخت کامل نیست‬
‫• ‪:Min Heap‬‬
‫• ‪Min Tree‬‬
‫یک درخت دودویی کامل که ‪ Min Tree‬نیز باشد‪.‬‬
‫درختی که مقدار کلید هر گره در آن‪ ،‬کوچکترمساوی‬
‫مقدار‬
‫‌‬
‫کلید فرزندانش (در صورت وجود) باشد‪.‬‬
‫‪32‬‬
‫‪32‬‬
‫‪46‬‬
‫‪73‬‬
‫‪53‬‬
‫‪45‬‬
‫‪21‬‬
‫جلسه دهم و یازدهم‪92/10/05 ،‬‬
‫‪73‬‬
‫‪72‬‬
‫‪82‬‬
‫‪55‬‬
‫‪45‬‬
‫‪80‬‬
‫‪82‬‬
‫‪67‬‬
‫‪67‬‬
‫درخت ‪ MinHeap‬است‬
‫درخت کامل نیست‬
‫درخت‬
‫کاربرد ‪( HEAP‬برای‬
‫مطالعه)‬
‫‪ ‬محاسبه گره مینیمم و ماکزیمم در‬
‫‪Heap‬‬
‫‪22‬‬
‫‪ ‬درخت ‪:minHeap‬‬
‫‪ .1‬عنصر مینیمم در ریشه قرار دارد و بدون‬
‫مقایسه بدست میآید‪.‬‬
‫‪ .2‬عنصر ماکزیمم در برگها وجود دارد و‬
‫چون درخت کامل است تعداد برگها ⌋‪⌊n+1/2‬‬
‫و تعداد مقایسات برای محاسبه عنصر‬
‫ماکزیمم ‪ ⌊n+1/2⌋-1‬خواهد بود‪.‬‬
‫‪ ‬درخت ‪:maxHeap‬‬
‫‪ .1‬عنصر ماکزیمم در ریشه قرار دارد و‬
‫بدون مقایسه بدست میآید‪.‬‬
‫‪ .2‬عنصر مینیمم در برگها وجود دارد و چون‬
‫جلسه دهم و یازدهم‪،‬‬
‫درخت‬
‫‪ 92/10/05‬کامل است تعداد برگها ⌋‪ ⌊n+1/2‬و‬
‫درخت‬
‫نمایش‪ HEAP‬در حافظه‬
‫‪ ‬برای نمایش ‪ mintree‬و ‪ maxtree‬چون لزوما‬
‫درختان کاملی نیستند از نمایش پیوندی‬
‫استفاده میشود‪ .‬چون در صورت استفاده از‬
‫آرایه اتالف حافظه خواهند داشت‪.‬‬
‫‪ ‬برای نمایش ‪ maxHeap‬و ‪ minHeap‬چون‬
‫درختان کاملی هستند از آرایه استفاده‬
‫میکنیم که در این حالت اتالف حافظه‬
‫‪83‬‬
‫نخواهیم داشت‪.‬‬
‫‪80‬‬
‫‪‬‬
‫مثال‪:‬‬
‫‪‬‬
‫‪23‬‬
‫‪75‬‬
‫‪75‬‬
‫نحوه نمایش درخت مقابل در آرایه؟‬
‫جلسه دهم و یازدهم‪،‬‬
‫‪92/10/05‬‬
‫درخت‬
‫‪32‬‬
‫‪ ‬ابتدا عنصر جدید به گونهای درج‬
‫می شود که ویژگی کامل بودن درخت‬
‫حفظ شود‪( .‬یعنی در آخرین سطح در‬
‫اولین موقعیت از چپ به راست)‬
‫‪ ‬سپس درخت به گونهای تنظیم میشود‬
‫نیز‬
‫تا ویژگی ‪ Max Tree‬بودن آن‬
‫ایجاد شود‪( .‬یعنی در ‪ maxHeap‬تا‬
‫جاییکه از والدش بزرگتر باشد و‬
‫در ‪ minHeap‬تا جاییکه از والدش‬
‫کوچکتر باشد باید با آن جابهجا‬
‫شود‪).‬‬
‫‪24‬‬
‫جلسه دهم و یازدهم‪،‬‬
‫‪92/10/05‬‬
‫درخت‬
‫‪ ‬مثال‪ :1‬عنصر ‪ 95‬را در ‪ MaxHeap‬زیر‬
‫درج کنید‪.‬‬
‫‪98‬‬
‫‪98‬‬
‫‪0‬‬
‫‪95‬‬
‫‪90‬‬
‫‪25‬‬
‫‪30‬‬
‫‪80‬‬
‫‪60‬‬
‫‪75‬‬
‫‪25‬‬
‫‪0‬‬
‫‪98‬‬
‫‪1‬‬
‫‪95‬‬
‫‪2‬‬
‫‪90‬‬
‫‪3‬‬
‫‪80 12‬‬
‫‪4‬‬
‫‪60‬‬
‫‪5‬‬
‫‪30‬‬
‫‪6‬‬
‫‪30‬‬
‫‪25‬‬
‫‪7‬‬
‫‪25‬‬
‫‪7‬‬
‫‪12‬‬
‫‪8‬‬
‫‪12‬‬
‫‪8‬‬
‫‪9‬‬
‫‪75‬‬
‫‪9‬‬
‫‪75‬‬
‫جلسه دهم و یازدهم‪،‬‬
‫‪92/10/05‬‬
‫‪90‬‬
‫‪25‬‬
‫‪80‬‬
‫‪30‬‬
‫‪98‬‬
‫‪95‬‬
‫‪60‬‬
‫‪75‬‬
‫‪12‬‬
‫‪0‬‬
‫‪98‬‬
‫‪1‬‬
‫‪80‬‬
‫‪2‬‬
‫‪90‬‬
‫‪3‬‬
‫‪95‬‬
‫‪4‬‬
‫‪60‬‬
‫‪5‬‬
‫‪6‬‬
‫‪30‬‬
‫‪25‬‬
‫‪7‬‬
‫‪12‬‬
‫‪8‬‬
‫‪90‬‬
‫‪25‬‬
‫‪80‬‬
‫‪30‬‬
‫‪60‬‬
‫‪75‬‬
‫‪12‬‬
‫‪98‬‬
‫‪1‬‬
‫‪80‬‬
‫‪2‬‬
‫‪90‬‬
‫‪3‬‬
‫‪75‬‬
‫‪4‬‬
‫‪60‬‬
‫‪5‬‬
‫‪6‬‬
‫‪9‬‬
‫درخت‬
‫مثال‬
‫‪ ‬مثال‪:2‬‬
‫‪‬‬
‫درج عناصر ‪ 23 ،42 ،11 ،57 ،91 ،44‬از‬
‫‪ maxHeap‬تهی؟‬
‫چپ به راست در درخت‬
‫‪91‬‬
‫‪57‬‬
‫‪44‬‬
‫‪11‬‬
‫‪23‬‬
‫‪42‬‬
‫‪ ‬مثال‪:3‬‬
‫‪‬‬
‫درج عناصر ‪ 23 ،42 ،11 ،57 ،91 ،44‬از‬
‫‪ minHeap‬تهی؟‬
‫چپ به راست در درخت‬
‫‪11‬‬
‫‪42‬‬
‫‪23‬‬
‫‪44‬‬
‫‪26‬‬
‫جلسه دهم و یازدهم‪،‬‬
‫‪92/10/05‬‬
‫‪91‬‬
‫‪57‬‬
‫درخت‬
‫‪ ‬حذف از درخت ‪ Heap‬همواره از ریشه‬
‫صورت می گیرد‪.‬‬
‫‪ ‬پس از حذف ریشه‪ ،‬آخرین عنصر‬
‫جایگزین آن میشود‪ .‬سپس در ‪maxHeap‬‬
‫تا جائیکه از فرزندانش کوچکتر‬
‫باشد با بزرگترین فرزندش و در‬
‫‪ minHeap‬تا جائیکه از فرزندانش‬
‫بزرگتر باشد با کوچکترین فرزندش‬
‫جابهجا میشود‪.‬‬
‫‪27‬‬
‫جلسه دهم و یازدهم‪،‬‬
‫‪92/10/05‬‬
‫درخت‬
‫‪ ‬از ‪ MaxHeap‬زیر یک عنصر حذف کنید‪.‬‬
‫‪90‬‬
‫‪65‬‬
‫‪0‬‬
‫‪65‬‬
‫‪25‬‬
‫‪80‬‬
‫‪30‬‬
‫‪60‬‬
‫‪75‬‬
‫‪12‬‬
‫‪65‬‬
‫‪1‬‬
‫‪80‬‬
‫‪2‬‬
‫‪90‬‬
‫‪3‬‬
‫‪75‬‬
‫‪4‬‬
‫‪60‬‬
‫‪5‬‬
‫‪6‬‬
‫‪90‬‬
‫‪80‬‬
‫‪2‬‬
‫‪65‬‬
‫‪3‬‬
‫‪75‬‬
‫‪4‬‬
‫‪60‬‬
‫‪5‬‬
‫‪30‬‬
‫‪6‬‬
‫‪30‬‬
‫‪25‬‬
‫‪7‬‬
‫‪25‬‬
‫‪7‬‬
‫‪12‬‬
‫‪8‬‬
‫‪12‬‬
‫‪8‬‬
‫‪9‬‬
‫‪28‬‬
‫‪0‬‬
‫‪1‬‬
‫جلسه دهم و یازدهم‪،‬‬
‫‪92/10/05‬‬
‫‪90‬‬
‫‪25‬‬
‫‪80‬‬
‫‪30‬‬
‫‪98‬‬
‫‪60‬‬
‫‪75‬‬
‫‪12‬‬
‫‪0‬‬
‫‪90‬‬
‫‪25‬‬
‫‪80‬‬
‫‪30‬‬
‫‪75‬‬
‫‪60‬‬
‫‪65‬‬
‫‪98‬‬
‫‪9‬‬
‫‪12‬‬
‫‪98‬‬
‫‪1‬‬
‫‪80‬‬
‫‪2‬‬
‫‪90‬‬
‫‪3‬‬
‫‪75‬‬
‫‪4‬‬
‫‪60‬‬
‫‪5‬‬
‫‪30‬‬
‫‪6‬‬
‫‪25‬‬
‫‪7‬‬
‫‪12‬‬
‫‪8‬‬
‫‪65‬‬
‫درخت‬
‫‪9‬‬