הגדרה
צומת בעץ בינארי הוא עלה אם שני המצביעים שלו ל־left ול־right הם null. במילים אחרות – זה צומת ללא ילדים.
כל עץ בינארי לא ריק מכיל לפחות עלה אחד (השורש עצמו אם אין לו ילדים).
דוגמה מצוירת
העלים (מודגשים בכתום): D, F, G. סך הכל 3 עלים.
בדיקה אם צומת הוא עלה
public static boolean isLeaf(BinNode<Integer> t) { return t != null && t.getLeft() == null && t.getRight() == null; }
ספירת עלים – רקורסיבית
public static int countLeaves(BinNode<Integer> t) { if (t == null) return 0; if (t.getLeft() == null && t.getRight() == null) return 1; return countLeaves(t.getLeft()) + countLeaves(t.getRight()); }
זמן ריצה: O(n). שטח: O(h).
נוסחאות שימושיות
- בעץ בינארי מלא בגובה h יש בדיוק 2h עלים ו־2h+1 − 1 צמתים בסך הכל.
- בעץ בינארי מלא: מספר העלים = מספר הצמתים הפנימיים + 1.
- בעץ מנוון (כל צומת עם ילד יחיד): יש בדיוק עלה אחד.
- טווח אפשרי למספר העלים בעץ עם n צמתים: בין 1 ל־⌈n/2⌉.
וריאציות נפוצות בשאלות בגרות
- סכום ערכי העלים: אותה רקורסיה, רק שבמקום להחזיר 1 לעלה – מחזירים
t.getValue(). - העלה הגדול ביותר: רקורסיה שמחזירה max בין הילדים, ולעלה מחזירה את הערך עצמו.
- בדיקה אם כל העלים נמצאים באותה רמה: מחשבים את רמת כל עלה ובודקים שכולם שווים.
- הדפסת המסלולים מהשורש לעלים: רקורסיה עם רשימה צוברת – מדפיסים כשמגיעים לעלה.
שאלות נפוצות
האם השורש יכול להיות עלה?
כן! אם העץ מכיל רק צומת אחד (השורש בלבד, ללא ילדים) – השורש הוא גם עלה.
מה הגובה של עלה?
0 (בהגדרה הנפוצה שמודדת בקשתות). ראו גובה עץ בינארי.
איך מדפיסים את העלים מהשמאלי לימני?
סריקת inorder או preorder עוברת על העלים משמאל לימין באופן טבעי – פשוט מדפיסים רק כשמזהים עלה.
תרגול בגרות במדעי המחשב?
מורים פרטיים מנוסים יעזרו לכם לפתור שאלות עצים בלי לחשוש מהרקורסיה.
מצאו מורה פרטי