prepd.

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

נגדיר את המבנה של עץ בינרי אוגר – עץ בינרי המכיל בכל צומת שדה אוגר (בנוסף למפתח כמובן).
בהינתן עץ בינרי אוגר
, ניתן לבנות ממנו עץ בינרי רגיל : עבור כל צומת ב-, מחברים את הערך לכל המפתחות בתת-העץ המושרש ב-; נאמר ש- מייצג את .

כתבו אלגוריתם הרץ בזמן
, המבדק אם עץ הבינרי האוגר מייצג עץ חיפוש בינרי.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
שאלה חוזרתהאוניברסיטה הפתוחהמבחן סמסטר ב2019 סמסטר ב | 2019 סמסטר ב
עצי חיפושאלגוריתמיםרקורסיה
בצעו מעבר inorder על העץ. עקבו אחרי סכום מצטבר של ערכי מהשורש לצומת הנוכחי. המפתח האמיתי של כל צומת הוא + סכום ה- בנתיב מהשורש אליו. בדקו שהמפתחות האמיתיים בסדר עולה.
הרעיון: נבצע מעבר inorder, כאשר בכל צומת נחשב את המפתח האמיתי (key + סכום ה-add מהשורש). נבדוק שהמפתחות האמיתיים עולים.

IS-BST(A):
  prev = -∞
  return CHECK(root[A], 0)

CHECK(z, cumulative_add):
  if z == NIL:
    return TRUE
  cumulative_add = cumulative_add + add[z]
  // בדיקת תת-עץ שמאלי
  if not CHECK(left[z], cumulative_add):
    return FALSE
  // בדיקת הצומת הנוכחי
  real_key = key[z] + cumulative_add
  if real_key ≤ prev:
    return FALSE
  prev = real_key
  // בדיקת תת-עץ ימני
  return CHECK(right[z], cumulative_add)


הערה: prev הוא משתנה גלובלי.


סיבוכיות: מעבר inorder מבקר כל צומת בדיוק פעם אחת, ובכל צומת מבצע
עבודה. סה"כ .