תאריך הבחינה: שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס:

Σχετικά έγγραφα
מבחן מועד ב' בהצלחה! אנא קיראו היטב את ההוראות שלהלן: ודאו כי כל עמודי הבחינה נמצאים בידכם.

חורף תש''ע פתרון בחינה סופית מועד א'

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

תרגול פעולות מומצאות 3

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

שאלה 1 V AB פתרון AB 30 R3 20 R

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

פתרון תרגיל 4 יסודות מבני נתונים סמסטר א' תשע"ה שאלה 1:

מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m.

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:

מבני נתונים ויעילות אלגוריתמים

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

מבני נתונים מבחן מועד א' סמסטר אביב תשס"ו

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

השאלות ידי מצביעים לילדים.

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה

gcd 24,15 = 3 3 =

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

תרגיל 13 משפטי רול ולגראנז הערות

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא

Logic and Set Theory for Comp. Sci.

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

תרגול מס' 6 פתרון מערכת משוואות ליניארית

השאלות..h(k) = k mod m

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

מיון. 1 מיון ערימה (Heapsort) חלק I 1.1 הגדרת ערימה 0.1 הגדרה של המושג מיון מסקנה: הערך הכי גבוה בערימה נמצא בשורש העץ!

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

ל הזכויות שמורות לדפנה וסטרייך

תורת הגרפים - סימונים

מבני נתונים ויעילות אלגוריתמים

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

עצי 2-3 תזכורת: בנים. דוגמאות: Chapter 19: B trees ( ) Chapter 15: Augmenting data structures ( )

מבני נתונים הגבלת אחריות פרק - 1 אלגוריתמי מיון ואנליזה אסימפטוטית. מיון בועות Sort Bubble מאת : סשה גולדשטיין,

מבני נתונים. אחרי שלב זה המשיכו והריצו את מיון מהיר על המערך. תארו את כל שלבי הרקורסיה, אך עתה אין צורך להיכנס לתיאור הריצה של.

אלגברה ליניארית (1) - תרגיל 6

מבני נתונים עצים שיעור 7

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי... 2 II מבני נתונים 20 8 מבני נתונים מופשטים משפט האב גרפים... 37

עץץץץ AVL. עץ AVL הוא עץ חיפוש בינארי שמקיים את התנאי הבא: לכל צומת x בעץ גורם האיזון של x הוא 1, 0, או 1-. הגדרה: במילים אחרות: לכל צומת x בעץ,

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

מבני נתונים (234218) 1

áùçîä éòãîì äîâîä ÌÈÏÈ ÂÁ

2 יח"ל ) השלמה ל - 5 יח"ל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת.

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

( n) ( ) ( ) שאלה 1: שאלה 2: שאלה 3: (n 5) = Θ. ב. אם f 1, f 2, g 1, g 2. .g 1 *g 2 = Ω(f 1 *f 2 ) , g. ג. ) n.n! = θ(n*2. n) f ( אז ד. אם ה. אם ו.

גבול ורציפות של פונקציה סקלרית שאלות נוספות

s ק"מ קמ"ש מ - A A מ - מ - 5 p vp v=

סדרות - תרגילים הכנה לבגרות 5 יח"ל

אלגוריתמים 1, סמסטר אביב 2017

מבני נתונים מבחן מועד א' סמסטר חורף תשס"ו

מבני נתונים אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון:

םינותנ ינבמ (הנכות ידימלתל)

logn) = nlog. log(2n

Hash Tables (המשך) ערבול (Hashing)

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור

חידה לחימום. כתבו תכנית שהקלט שלה הוא מספר שלם n,

3-9 - a < x < a, a < x < a

מבוא למדעי המחשב מבוא למדעי המחשב מ' - תירגול 14

{ : Halts on every input}

Nir Adar גירסה 1.00 עמוד 1

סיכום- בעיות מינימוםמקסימום - שאלון 806

מתמטיקה בדידה תרגול מס' 13

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון.

מבני נתונים ואלגוריתמים תרגול #11

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

CHAIN MATRIX MULTIPLICATION וגיא בן-חורין

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

םינותנ ינבמ 3 ליגרתמ תולאשל המוד תולאש טסל תונורתפ תולאשה

מצולעים מצולעהוא צורה דו ממדית,עשויה קו"שבור"סגור. לדוגמה: משולש, מרובע, מחומש, משושה וכו'. לדוגמה:בסרטוט שלפappleיכם EC אלכסוןבמצולע.

רשימת בעיות בסיבוכיות

מודלים חישוביים מבחן מועד א', סמסטר א' תשע''ה (2015)

שיטות אנליזה לניתוח זמנים משוערך Amortized Time Analysis

אסימפטוטיים תוכנית הקורס עצי AVL עצי 2-3 עצי דרגות סיבוכיות משוערכת מיון מיון שימושים: גרפים איסוף אשפה

תרגיל 7 פונקציות טריגונומטריות הערות

אוניברסיטת בר אילן מבני נתונים תרגולים מרצה: פרופ' שמואל טומי קליין סמסטר ב', תש"ע

אלגברה לינארית (1) - פתרון תרגיל 11

תכנון דינאמי. , p p p והמטריצה המתקבלת היא בגודל

ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי

אלגברה ליניארית 1 א' פתרון 2

פרק 13 רקורסיה רקורסיה רקורסיה רקורסיות פשוטות: חישוב עצרת. תמונת המחסנית ב-() factorial רקורסיות פשוטות: פיבונאצ'י

מתמטיקה בדידה תרגול מס' 12

פתרון תרגיל בית 6 מבוא לתורת החבורות סמסטר א תשע ז

. {e M: x e} מתקיים = 1 x X Y

מבני נתונים מדעי המחשב שאלון: מועד ב' תשע"ו מדעי המחשב פתרון בחינת הבגרות. Java שאלה 1. blog.csit.org.

קיום ויחידות פתרונות למשוואות דיפרנציאליות

Transcript:

תאריך הבחינה:... נובה פנדינה שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס:..00 מספר הקורס:. סמסטר: א' מועד: שנה: שלוש שעות משך הבחינה: ללא חומר עזר חומר עזר: ב' הנחיות חשובות: רצוי לפתור את המבחן תחילה במחברת הטיוטה. לאחר מכן להעתיק את התשובות למקום המיועד בטופס התשובות. בדיקת המבחן לא תביא בחשבון את מחברת הטיוטה. מחברות הטיוטה יילקחו לגריסה עם תום הבחינה. המבחן מורכב מ שאלות. יש לענות על כל השאלות. בסעיפים בהם קיימת דרישת זמן לאלגוריתם שעליכם להציע, יש לתת הסבר מספק שאכן עמדתם בדרישת הזמן שבשאלה. ניתן להשתמש במבני נתונים ואלגוריתמים שנלמדו בכיתה ללא פירוט של המימוש שלהם אלא אם השאלה דורשת במפורש פירוט של המימוש. במידה וקיים יותר ממימוש אחד ניתן לבחור כל מימוש שמתאים לזמני הריצה המבוקשים ולתנאי השאלה. במידה ואינכם יודעים את התשובה לסעיף כלשהו, רשמו "לא יודע/ת" )במקום תשובה( ותזכו ב- 20% מניקוד הסעיף. לא ניתן לכתוב לא יודע על חלק מסעיף. שאלה 2 3 4 ציון ציון

שאלה )20 נקודות(: סעיף א )0 נקודות( נתונים קטעי קוד. לכל אחד מהקטעי קוד קבעו מהו זמן ריצתם. רשמו את הנוסחה המתארת זמן ריצה של קטע קוד ומצאו חסם אסימפטוטי הדוק ביותר. נמקו תשובתכם!. Magic(n){ If (n==0) return ; x 0; for ( i to n) x x+magic(n-) return x; } T(n)= nt(n-)+; T(0)=; נפתח באיטרציות את נוסחת הנסיגה ונקבל: T(n)=Θ(n!) 2. Function(n){ x 0; for (i n; i>0; i i/2) x Magic(i); return x; } T(n)=n!+(n/2)!+(n/4)!+ +(n/2^(log n))! נחסום מלמלה על ומלמטה ונקבל : kn! T(n) c logn n! * יש פתרון מדויק יותר, את הפתרון הנ"ל קיבלנו כנכון. סעיף ב ) נקודות(:

נתון מערך בעל n מספרים שלמים. ההפרש המקסימאלי השמאלי מוגדר כהפרש הגדול ביותר בין איבר מערך כלשהו וכל האיברים המופיעים משמאלו במערך. לדוגמה, במערך: 2 3 8 9 4 ההפרש המקסימאלי השמאלי הינו 6, כיוון שההפרש בין 0 ולבין. )הנמצא משמאלו( הינו הכי גדול. MaxDiffSlow(A){ max=a[]-a[0]; for(j 2 to A.length) for(i 0 to j) if(a[j]-a[i]>max) max a[j]-a[i]; return max;. ). נקודות( נתון פסאודו קוד. האם האלגוריתם פותר את בעיית מציאת ההפרש המקסימאלי השמאלי? מהו זמן הריצה של האלגוריתם?. אלגוריתם עובר על כל הזוגות הרלוונטיים ומחשב את ההפרש השמאלי. מכל התוצאות אלגוריתם בוחר בהפרש המקסימאלי. כלומר, אלגוריתם פותר את בעיית ההפרש המקסימאלי השמאלי. זמן ריצתו: O(n^2) במקרה הגרוע. )7 נקודות( כתוב פסאודו-קוד של אלגוריתם המוצא הפרש מקסימאלי שמאלי במערך הנתון בזמן ריצה ליניארי. ניתן להשתמש ב ()O זכרון נוסף. הרעיון הוא להתחיל לעבור על המערך משמאל, ובכל שלב לזכור )במשתנה )min את הערך המינימאלי שראינו עד כה, ואת ההפרש השמאלי הגדול ביותר עד כה )נשמור במשתנה.)diff צריך לשים לב שעבור מספר מסויים במערך הנמצא במקום i ההפרש השמאלי הגדול עבורו נקבע על פי האיבר עצמו והאיבר הכי קטן שראינו עד עכשיו- כלומר, אין צורך לבצע חישוב עבור כל האיברים מהראשון ועד ה i, אלא עבור איבר הקטן ביותר שראינו עד כה. MaxDiffFast(A){ min=a[0]; diff=a[]-a[0]; for(i= to n-){ if(a[i]-min > diff) diff=a[i]-min; if(a[i]<min) min=a[i]; }// for }//algorithm

שאלה )2 2 נקודות(. על לוח משחק בגודל m m מונחים k כלי משחק זהים. בהינתן m ומיקומי הכלים )כאשר מיקומו של כלי נקבע עפ"י מספר השורה ומספר העמודה המתאימים זוג אינדקסים,)(i,j) עליך להיערך בזמן O(k), כאשר ברשותך זיכרון נוסף בגודל בלבד, לתמיכה בפעולות הבאות בזמן צפוי ()O : O(k),x, p ( מצא את מספר הכלים שנמצאים במרחק y) בהינתן נקודה Neighbors (p) של צעד אחד מ-, p כאשר בצעד אחד מותר לנוע אל אחת מבין לכל היותר 8 המשבצות הסמוכות. ניתן להניח כי p הינו מיקום חוקי בתחום הלוח. דוגמא: p במקרה זה התשובה היא. 4 p 2. p 2 אם קיים כבר כלי ב- p ל- Move(p,p2) הזז את כלי המשחק הנמצא ב- p 2 שני מיקומים חוקיים p ו עליך לדווח שגיאה, ולא לבצע את ההזזה. ניתן להניח כי בתחום הלוח. כתבו את עיבוד הקדם ואת מימוש השאילתות. נתחו זמני ריצה. נשתמש בטבלת גיבוב עם chaining בגודל k. בתרגולים ראינו פונקציות גיבוב של משתנה יחיד, ניתן להרחיבם בקלות לפונציות גיבוב של 2 משתנים ומעלה. אפשרות נוספת היא להמיר זוג אינדקסים למספר בודד באופן הבא: נמיר את זוג האינדקסים (i,j) למספר יחיד בתחום :[..m*m] T(i,j) = (i-)*m+j ההמרה היא חח"ע, ולכן גם הפיכה. עיבוד מקדים: נכניס את כל מיקומי הכלים לטבלת הגיבוב. מכיוון שמספר הכלים זהה למספר האיברים בטבלה, מקדם העומס הוא, ולכן כל ההכנסות )והמחיקות( יתבצעו בזמן ()O. הזמן הכולל של העיבוד המקדים הוא איתחול טבלה בגודל k, ועוד k הכנסות, ולכן הוא שווה ל O(k) בממוצע. 4 :Neighbors (p) נחשב ל,(x,y) את 8 האינדקסים השכנים ) ( כאשר ) (, לכל אינדקס שכן שמצאנו, נוודא שהאינדק חוקי, כלומר נמצא בתחום לוח המשחק, לדוגמא (0,) איננו אינדקס חוקי. אם האינדקס השכן חוקי נבדוק האם הוא קיים בטבלת הגיבוב, ונסכום את מספר האיברים שמצאנו.

חישוב אינדקסי השכנים, ובדיקה שהם חוקיים, מתבצעת בזמן קבוע. חיפוש בטבלת הגיבוב, תתבצע לכל היותר 8 פעמים, ולכן עלות הפעולה בסך הכל היא ()O בממוצע. Move(p,p2) נבדוק תחילה האם האינדקס p2, נמצא בטבלת הגיבוב, אם כן, נחזיר שגיאה. אחרת, נמחק את האינדקס p, מטבלת הגיבוב, ונכניס את האינדקס p2 לטבלה. אנו מבצעים לכל היותר 3 פעולות, ולכן זמן הריצה הוא ()O בממוצע. שאלה ) 3 נקודות( מערך A עם n איברים נקרא כמעט ממויין )k<n( k אם A[i],A[j] לכל i,j המקיימים.j-i>k במילים אחרות, המערך לא חייב להיות ממויין, אבל כל שני איברים הנמצאים בסדר הפוך, לא יכולים להיות רחוקים זה מזה יותר מ- k מקומות. סעיף א )8 נקודות(: 8 תן דוגמה למערך כמעט ממויין 3 תאים, אשר בעל מערך כמעט איננו ) נקודות( ממויין.. )2 נקודות( מערך כמעט ממויין הינו מערך ממוין. נכון/לא נכון )סמן התשובה הנכונה(... for(i=0;i<n; i = i+k){ 2. sort (A,i,i+k-) 3. } ) נקודות( בהינתן האלגוריתם הבא:.. אשר ממיין k -איברים עוקבים ב- A בצורה סדרתית. לדוגמא: עבור המערך מסעיף א', האלגוריתם ימיין את האיברים 0,,2, ולאחר מכן את האיברים 4,,. וכן הלאה. הוכח, אם לא ספק דוגמא האם האלגוריתם הופך מערך כמעט ממויין k נגדית. לממויין? אם כן sort האלגוריתם איננו הופך מערך כמעט ממויין k לממויין. 4. ) נקודות( מהו זמן הריצה של האלגוריתם, בהנחה שהפונקציה איברים בזמן?O(mlogm) פועלת על m

הפונקציה sort פועלת על n/k בלוקים )בקירוב( k הריצה הוא ) ( ) ( בגודל לכל היותר, ולכן זמן סעיף ב ) נקודות(: הצע אלגוריתם המבוסס על מיון מהיר אשר מקבל מערך והופך אותו לכמעט ממויין k. האלגוריתם החדש צריך להיות יעיל יותר מהאלגוריתם המקורי. מהו זמן הריצה האסימפטוטי של האלגוריתם החדש במקרה הטוב ביותר? רמז: אילו שורות צריך לשנות במיון מהיר על מנת שיבצע את הנדרש? צריך להחליף את שורה באלגוריתם המקורי )מופיע למטה( if (r-p>k) בשורה הבאה: נוסחת הרקוסיה של האלגוריתם החדש נשארת אותו דבר, אולם בסיס הרקוריסה משתנה: ( ) ( ) ( ) ( ) אם נפתח את הנוסחה כעץ רקורסיה נקבל כי גובה העץ הינו מבוצעות O(n) פעולות, ולכן זמן הריצה הינו., ובכל רמה שאלה )2 4 נקודות( גרפים,V G ( גרף לא מכוון הנתון ע"י רשימות הסמיכויות lists).(adjacency עבור יהי (E קבוצת קודקודים S V יהי OUT(S) מספר הקשתות e E כך שבדיוק אחד משני קודקודי e שייך ל-. S 2 6 לדוגמא:

3 4 עבור הגרף הנתון באיור ו- {2,4,}=S,.OUT(S) = 3 הצע אלגוריתם, אשר מקבל גרף וקבוצת קודקודים S )הניתנת כרשימה משורשרת( ומדפיס את.OUT(S) אין הגבלת זיכרון נוסף. זמן הריצה של האלגוריתם: log S V S בבדיקה קיבלנו כל אלגוריתם המבצע את הנדרש ללא תלות בזמן ריצתו. )בהנחה וזמן ריצה של אלגוריתם מנותח בצורה נכונה(. אחד הפתרונות: לבנות מקודקודי קבוצה S עץ AVL על פי המפתחות שלהם. בזמן: S log S לאחר מכן, עבור כל קודקוד של קבוצה S לעבור על רשימת הסמכיות שלו : לכל שכן לחפש אותו בעץ.AVL עבור כל שכן שלא נמצא בעץ AVL נספרו לתשובה סופית. זמן ריצה: לכל קודקוד יכולים להיות מקסימום Vשכנים, לחפש כל אחת בעץ AVL לוקח (S O(log זמן. ס"ה עבור השלב השני: S. V log S ס"ה עבור כל האלגוריתם: S. V Log S שאלה )24 נקודות( בשאלה זו אתם נדרשים לממש ערימת מקסימום בעזרת עץ בינארי )במקום המימוש הרגיל בעזרת מערך(. הציעו מבנה נתונים עבור קבוצת איברים בעלי מפתחות מספרים שלמים. על מבנה הנתונים להעזר במבנה נתונים עץ בינארי על מנת לתמוך בפעולות הבאות: פעולה תיאור זמן )במקרה הגרוע( אתחול מבנה נתונים. בהתחלה המבנה ריק )לא ) ( מכיל איברים(. tini () (log (n. k הכנסת איבר חדש בעל מפתח MaxHeapInsert (k) Max() החזרת ערך מקסימאלי הנמצא במבנה ) ( 7

(log n) (log n) הוצאת איבר בעל ערך מקסימאלי הנמצא במבנה הפונקציה מקבלת מצביעים לשורשים של שני עצים מושלמים המהווים ערימות מקסימום. פונקציה זו צריכה למזג שתי ערימות אלו לתוך ערימת מקסימום אחת, ולהחזיר מצביע לשורש. ExtractMax(k) Merge( ) אתם רשאים להשתמש רק במבנה נתונים שהוא עץ בינארי )עם מצביעים לילדים ואבות בכל קודקוד(. ניתן להישתמש בזיכרון נוסף בגודל קבוע. פרטו לגבי מבנה הנתונים שאתם מציעים )אובייקטים, שדות וכו'(, וכתבו מקוצר הסברים עבור מימוש של הפעולות. הרעיון בשאלה זו להשתמש בעץ בינארי )רגיל(, כאשר תוך כדי הכנסה\מחיקה נשמור על הצורה הכמעט מאוזנת של העץ וגם על תכונת המפתחות של ערימת מקסימום. נחזיק בכל שלב מצביע next אשר יצביע למרום פנוי הבאה בעץ עליו אפשר להכניס איבר חדש. )המקום האפשרי הבא הינו מקום אשר לא פוגע בצורה הכמעט המאוזנת של העץ(. כלומר, נמלא את העץ לפי רמות, משמאל לימין, באופן סדרתי. אחרי כל פעם שנכניס קודוקד, עלינו למצוא מקום פנוי הבא האפשרי. next =null נאתחל עץ ריק. Init() (k) -MaxHeapInsert נצרך קודקוד חדש כעלה למקום עליו מצביע.next עתה ננמצא מהו מקום אפשרי פנוי הבא בעץ. הכלל הוא כזה: אם הקודקוד החדש הצטרף כבן שמאלי לאביו, אזי המקום הפנוי הבא הינו הבן הימני של אביו. אחרת )אם הקודקוד החדש הצטרף כבן ימני לאביו(: נעלה בעץ למלה בחיפוש לאב קודמון ראשון כך שהקודקוד החדש שנכנס הינו צאצא השמאלי שלו. מקודקוד זה נלך לילד ימני שלו, ומשם נתקדם הכי השמאלי שניתן. אופן הכנסה זה שומר על העץ להיות כמעט שלם בכל שלב, ולכן הגובה שלו יהיה.O(log n) לאחר הכנסת הקודוקד כעלה, נפעפע את הערך שלו למעלה על פני העץ, עד המקום הנכון שלו )במידה וצריך(, בדומה לפונקצית UpHeapify שראיתם בתרגול. זמן ריצה: (n O(log -ExtractMax() נשים את המפתח של האיבר האחרון שנכנס למבנה במקום הערך של השורש. נמחוק את האיבר הזה פיזית מהעץ. לאחר מכן נתקן את הערימה עד לחוקית )בדומה לMaxHeapify ( ) Merge( נמחוק מעץ H2 את הקודקוד שנכנס אחרון. הוא יהיה השורש החדש. העץ H יהיה בן השמאלי העץ H2 )לאחר המחיקה( יהיה עץ ימני. עתהבן 8

שמאלי ערימה חוקית, בן ימני- ערימה חוקית, ביחד עם השורש לאו דווקא ערימה חוקית. נתקנה בדומה ל.MaxHeapify בהצלחה! דף עזר יסודות מבני נתונים 202-- 0