Presentation is loading. Please wait.

Presentation is loading. Please wait.

עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים

Similar presentations


Presentation on theme: "עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים"— Presentation transcript:

1 amirrub@cs - אמיר רובינשטיין
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים גובה של צומת (עץ) עומק של צומת 1 2 3 5 4 6 1 2 3 6 4 עץ בינארי שלם (complete) עץ בינארי מלא שבו כל העלים באותו עומק 5 7 1 2 3 5 4 6 7 עץ בינארי מלא (full) לכל צומת פנימי 2 בנים - אמיר רובינשטיין

2 amirrub@cs - אמיר רובינשטיין
עצים בינאריים – מימוש ע"י רשימות מקושרות בעלים - שדות המצביעים יכילו NULL. ניתן להחזיק בכל צומת גם מצביע לאב. - אמיר רובינשטיין

3 סיורים בעצים הדגמה: http://nova.umuc.edu/~jarc/idsv/
הדגמה: - אמיר רובינשטיין

4 amirrub@cs - אמיר רובינשטיין
הסיבוכיות בשני המימושים: זמן- O(n) ( אם do_something דורשת O(1) ) מקום- )גובה העץO(. - אמיר רובינשטיין

5 amirrub@cs - אמיר רובינשטיין
תרגיל 1 סטודנט הפעיל סיורים inorder ו- postorder על עץ שהיה ברשותו. כעבור זמן מה, הוא גילה שאיבד את העץ, אך יש עדיין בידו את תוצאות הסיורים. עזרו לסטודנט לשחזר את העץ. האם תמיד הדבר אפשרי? inorder : preorder : - אמיר רובינשטיין

6 amirrub@cs - אמיר רובינשטיין
תרגיל 2 נתון עץ בינארי, שבכל צומת בו יש מצביעים גם להורים. כיצד ניתן לממש סיור בעץ בסיבוכיות מקום נוסף O(1)? פתרון נחזיק שני מצביעים: current ו- last, שיצביעו בכל רגע לצומת הנוכחי בו אנו נמצאים, ולצומת הקודם בו היינו, בהתאמה. סיור inorder לדוגמא, יתבצע בדומה לקוד (הלא רקורסיבי) שהוצג קודם, אבל ללא שימוש מחסנית. בכל פעם שנעלה להורה v, נבדוק האם עלינו אליו משמאל או מימין: - אם עלינו משמאל, נבקר ב- v, ונמשיך בסיור לתת העץ הימני של v. - אם עלינו מימין, סיימנו לבקר בתת העץ ש- v הוא שורשו, לכן נעלה לאב של v. - אמיר רובינשטיין

7 דוגמאות לשימוש בסיורים ע"מ לחשב תכונות של עץ בינארי
חישוב מספר הצמתים בעץ בינארי int count (node *p) { if (!p) return 0; return (1 + count (p  left) + count (p  right)); } המסלול הכבד ביותר בעץ נתון עץ בעל n צמתים, לכל צומת יש מפתח, ושני מצביעים לבנים. מותר להוסיף שדות נוספים לצמתים לצורך הפתרון. הציעו אלגוריתם לחישוב ערכו של המסלול הכבד ביותר משורש לעלה כלשהו(המסלול שסכום המפתחות של צמתיו הוא מקסימלי). על האלגוריתם להדפיס מסלול זה. סיבוכיות דרושה – O(n). Key - אמיר רובינשטיין

8 מימוש למבנה הנתונים "מילון"
עצי חיפוש - מימוש למבנה הנתונים "מילון" עץ עץ חיפוש עץ בינארי עץ מאוזן AVL עץ טרנארי 2-3 - אמיר רובינשטיין

9 amirrub@cs - אמיר רובינשטיין
עצי חיפוש בינאריים עץ חיפוש בינארי הינו עץ בינארי עם התכונה הבאה: בהינתן צומת עם מפתח X, כל הצמתים עם מפתחות גדולים יותר נמצאים בתת העץ הימני, וכל הצמתים עם מפתחות קטנים יותר נמצאים בתת העץ השמאלי. פעולות על עץ חיפוש בינארי T: Find(T,x) Insert(T,x) Delete(T,x) פעולות אלה צריכות לשמור על התכונה שלעיל ! הדגמה: סיבוכיות כל הפעולות הנ"ל: )גובה העץO( מקרה גרוע: O(n) מקרה טוב: O(logn) מקרה ממוצע: O(logn) - אמיר רובינשטיין


Download ppt "עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים"

Similar presentations


Ads by Google