כ"ט/שבט/תשע"ה
עץ בינארי סריקה -שאלה מבגרות תשס"ט
ב .מהי סיבוכיות זמן הריצה של הפעולה שכתבת?
• הנח כי כל פעולות הממשק הבסיסיות של עץ בינארי הן בO(1) -
עץ בינארי סריקה -שאלה מבגרות תשס"ט
1
הפתרון – פעולת עזר "האם עָ לֶה"
פעולת עזר לבדיקה האם עלה
)public static bool IsLeaf(BinTreeNode<int> t
{
//מחזירה האם העץ הוא עלה
//דרך א -ארוכה
)if (t == null
;return false
else
)if (t.GetLeft() != null || t.GetRight() != null
;return false
else
;return true
//דרך ב -קצרה
;)return (t != null) && (t.GetLeft() == null) && (t.GetRight() == null
}
עץ בינארי סריקה -שאלה מבגרות תשס"ט
2
1
תשע"ה/שבט/כ"ט
הפתרון – הפעולה העיקרית
'הפתרון – דרך א
public static bool IsRightLeftTree(BinTreeNode<int> t)
{
הנחה העץ אותחל,מחזירה האם העץ הוא עץ ימין שמאל//
if (t == null || IsLeaf(t))
return true;
else
return (IsRightLeftTree(t.GetLeft())
&& (t.GetRight() != null && t.GetLeft() == null)
&& IsRightLeftTree (t.GetRight());
}
3
שאלה מבגרות תשס"ט- עץ בינארי סריקה
הפתרון – הפעולה העיקרית
)הפתרון – דרך ב' – סריקה תחילית (הביקור בשורש בהתחלה
public static bool IsRightLeftTree(BinTreeNode<int> t)
{
הנחה העץ אותחל,מחזירה האם העץ הוא עץ ימין שמאל//
if (t == null || IsLeaf(t)) return true;
else
if (t.GetRight() != null && t.GetLeft() == null)
return false;
else
return (IsRightLeftTree(t.GetLeft())
&& IsRightLeftTree(t.GetRight());
}
4
2
שאלה מבגרות תשס"ט- עץ בינארי סריקה
כ"ט/שבט/תשע"ה
סיבוכיות זמן הריצה של הפעולה
ב .מהי סיבוכיות זמן הריצה של הפעולה – ?IsRightLeftTree
תשובה
סיבוכיות זמן הריצה של הפעולה הוא ).O(n
הפעולה IsRightLeftTreeהיא בסיבוכיות זמן ריצה של ) ,O(nכיוון שעוברים בדיוק פעם
אחת באמצעות הרקורסיה ,במקרה הגרוע ביותר ,על כל אחד מ n-הצמתים בעץ וכל הפעולות
שהשתמשנו בהם הם פעולות ממשק בסיסיות של עץ שהם ב O(1)-או פעולת העזר IsLeaf
שגם היא ב O(1)-כיוון שהיא בעצמה כוללת רק פעולות בסיסיות של ממשק.
עץ בינארי סריקה -שאלה מבגרות תשס"ט
5
3
© Copyright 2025