- הגשות
- פתרונות
- פתרון רשמי
- תיאור
תכננו מבנה נתונים \(S\) שבאמצעותו ניתן לממש את כל אחת מהפעולות הבאות בסיבוכיות זמן ריצה של \(O(\log n)\), כאשר \(n\) מציין את מספר האיברים במבנה.
אם מעדכנים מבנה נתונים שנלמד בקורס, יש לציין רק מה העדכונים שבצעתם במבנה.
insert(S, x)
– מכניס את המפתח \(x\) למבנה.find(S, x)
– בודק האם המפתח \(x\) נמצא במבנה, ומחזיר מצביע לאיבר שמפתחו \(x\) במקרה שהתשובה היא כן.increment(S, x, ε)
– מוסיף ערך חיובי \(\epsilon > 0\) לכל אברי המבנה \(S\) שהמפתח שלהם גדול מ-\(x\).
ציירו דוגמה להמחשת הפעולה.
יש להסביר את הפתרון.
השתמשו בעץ חיפוש בינארי מאוזן (כמו עץ AVL או עץ אדום-שחור) והוסיפו לכל צומת שדה נוסף שיאגור את העדכונים המיועדים לתת-העץ שלו (עדכון עצל).