י"ט/אייר/תשע"ה
עץ בינארי של מחסניות סריקה -שאלה מבגרות תשע''ב
ב .מהי סיבוכיות זמן הריצה של הפעולה שכתבת?
הנח כי כל פעולות הממשק הבסיסיות של עץ בינארי הן בO(1) -
1
עץ בינארי של מחסניות סריקה -בגרות תשע''ב
הפתרון – פעולת עזר לביצוע החישוב עבור מחסנית בודדת
סכום שלושת הערכים העליונים במחסנית
)public static int MaxTop3Stack(Stack<int> s
{
//מחזירה את סכום שלושת הערכים העליונים במחסנית אם קיימים ,אם יש פחות משלושה
תחזיר הסכום של כולם ,אם המחסנית ריקה תחזיר .0הנחה -המחסנית אותחלה
;int sum = 0, count = 0
)while (!s.IsEmpty() && count < 3
{
;)(sum += s.Top
;count++
;)(s.Pop
}
;return sum
}
עץ בינארי של מחסניות סריקה -בגרות תשע''ב
2
1
י"ט/אייר/תשע"ה
הפתרון – הפעולה העיקרית -לא מותאמת לדרישות השאלה
)public static void Tree_MaxTop3Stack(BinTreeNode<Stack<int>> t, Stack<int> s_new
{
//הפעולה מקבלת עץ בינארי של מחסניות מספרים שלמים וכן כפרמטר מחסנית של מספרים.
//הפעולה מחזירה במחסנית הפרמטר ,מתוך העץ לפי סדר סריקה תוכית ,את סכום שלושת
הערכים העליונים בכל מחסנית (אם יש פחות מ ,3-מה שיש).
//הנחות -העץ אותחל ,המחסנית אותחלה ובקריאה ראשונה המחסנית ריקה
;Stack<int> s
)if (t != null
{
;)Tree_MaxTop3Stack(t.GetLeft(), s_new
;)(s = t.GetInfo
;))s_new.Push(MaxTop3Stack(s
;)Tree_MaxTop3Stack(t.GetRight(), s_new
}
}
3
עץ בינארי של מחסניות סריקה -בגרות תשע''ב
הפתרון – הפעולה העיקרית -לפי דרישות השאלה
הפעולה רק מפעילה את הפעולה הקודמת שהיא למעשה מבצעת הנדרש בשאלה.
בפעולה זאת מחזירים מחסנית ומקבלים רק עץ -כפי שמתואר בשאלה.
יש כאן שימוש בהעמסה (שתי פעולות עם אותו שם ,אבל ,מקבלות סוגי פרמטרים שונים)
)public static Stack<int> Tree_MaxTop3Stack(BinTreeNode<Stack<int>> t
{
//הפעולה מקבלת עץ בינארי של מחסניות מספרים שלמים וכן כפרמטר מחסנית של מספרים.
//הפעולה מחזירה במחסנית הפרמטר ,מתוך העץ לפי סדר סריקה תוכית ,את סכום שלושת הערכים
העליונים בכל מחסנית (אם יש פחות מ ,3-מה שיש).
//הנחות -העץ אותחל
;)(>Stack<int> s_new = new Stack<int
;)Tree_MaxTop3Stack(t, s_new
;return s_new
}
עץ בינארי של מחסניות סריקה -בגרות תשע''ב
4
2
י"ט/אייר/תשע"ה
סיבוכיות זמן הריצה של הפעולה
ב .מהי סיבוכיות זמן הריצה של הפעולה?
תשובה
סיבוכיות זמן הריצה של הפעולה MaxTop3Stackהיא ) ,O(1שכן ללא תלות בגודל
המחסנית ,היא עוברת מקסימום על 3ערכים בה .הפעולה נעזרת בפעולות הממשק של
מחסנית שכולן ב.O(1)-
הפעולה - Tree_MaxTop3Stackהמקבלת גם מחסנית ,היא בסיבוכיות זמן ריצה של
) ,O(nכיוון שעוברים בדיוק פעם אחת באמצעות הרקורסיה ,במקרה הגרוע ביותר ,על כל
אחד מ n-הצמתים בעץ וכל הפעולות שהשתמשנו בהם הם פעולות ממשק בסיסיות של עץ
שהם ב O(1)-או פעולת העזר MaxTop3Stackשגם היא ב O(1)-כיוון שהיא בעצמה כוללת
רק פעולות בסיסיות של ממשק.
הפעולה - Tree_MaxTop3Stackהמקבלת רק עץ ,היא בסיבוכיות זמן ריצה של ),O(n
שכן היא מפעילה בדיוק פעם אחת את הפעולה - Tree_MaxTop3Stackהמקבלת גם
מחסנית שהיא בסיבוכיות זמן ריצה של )( O(nוגם מפעילה פעולת ממשק של מחסנית שהיא
ב.)O(1)-
עץ בינארי של מחסניות סריקה -בגרות תשע''ב
5
3
© Copyright 2025