prepd.

שאלת מבחן במבני נתונים ומבוא לאלגוריתמים - האוניברסיטה הפתוחה 2021 - עצי חיפוש

בהינתן שלם חיובי , הציעו מבנה נתונים שבאמצעותו ניתן לבצע את הפעולות הבאות בזמנים הנדרשים ( מציין את מספר האיברים של ):

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

הסבר: העוקב ה-
של איבר נתון ב- מוגדר באופן רקורסיבי: העוקב הראשון הוא העוקב הרגיל; העוקב ה- הוא העוקב הרגיל של העוקב ה-.

הערה:
נתון מראש אך אין להתייחס אליו כקבוע בניתוח הזמנים.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
שאלה חוזרתהאוניברסיטה הפתוחהמבחן סמסטר ב2021 סמסטר ב | 2021 סמסטר ב
עצי חיפושסיבוכיותמבני נתוניםרשימות מקושרות
חשבו על עץ חיפוש בינרי מאוזן (כגון AVL או עץ אדום-שחור), שבו כל צומת מחזיק מצביע נוסף ל-D-SUCCESSOR שלו. בנייה ממערך ממוין אפשרית ב-. עדכון מצביעי ה-D-SUCCESSOR בזמן INSERT/DELETE דורש עדכונים.
המבנה המוצע: עץ חיפוש בינרי מאוזן (AVL / Red-Black Tree) עם שדה נוסף בכל צומת: מצביע לעוקב ה- שלו.

בנוסף, נשמור רשימה מקושרת דו-כיוונית של כל האיברים בסדר ממוין (in-order), כך שלכל צומת יש גם מצביע לעוקב ולקודם ברשימה.


**BUILD(
):**
הקלט ממוין. בונים עץ AVL מאוזן ממערך ממוין ב-
(בנייה רקורסיבית: האמצעי הוא השורש, חצי שמאלי תת-עץ שמאלי, חצי ימני תת-עץ ימני). במקביל בונים את הרשימה המקושרת. לכל צומת , ה- שלו הוא הצומת ה- מקומות קדימה ברשימה – ניתן לחשב זאת בסריקה אחת ב-.
סה"כ:
.

**D-SUCCESSOR(
, ):**
פשוט מחזירים
. זמן: .

**INSERT(
, ):**
1. הכנסה רגילה לעץ AVL ב-
.
2. מוצאים את העוקב והקודם של
ברשימה (זמינים מהעץ) ומכניסים את לרשימה.
3. עדכון מצביעי
: יש לעדכן את של הצמתים שלפני ברשימה, ולקבוע את של עצמו. סה"כ עדכונים, כשכל עדכון הוא (הולכים ברשימה).
סה"כ:
.

**DELETE(
, ):**
1. מחיקה רגילה מעץ AVL ב-
.
2. מסירים את
מהרשימה המקושרת.
3. עדכון מצביעי
: הצמתים שלפני ברשימה צריכים עדכון של ה- שלהם (כל אחד "מקפיץ" מעבר ל-). סה"כ עדכונים.
סה"כ:
.

נכונות: כל הפעולות שומרות על תכונות העץ המאוזן, על הרשימה הממוינת, ועל נכונות מצביעי ה-
.