כ"ט/שבט/תשע"ה עץ בינארי סריקה -שאלה מבגרות תשס"ט ב .מהי סיבוכיות זמן הריצה של הפעולה שכתבת? • הנח כי כל פעולות הממשק הבסיסיות של עץ בינארי הן ב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 2024