הגדרה

גובה של עץ בינארי הוא אורך המסלול הארוך ביותר מהשורש לעלה, כשמודדים באורך במספר הקשתות. הגדרה רקורסיבית:

  • עץ ריק (null) – גובה -1.
  • עץ עם צומת בודד (עלה) – גובה 0.
  • אחרת – 1 + max(גובה תת־עץ שמאלי, גובה תת־עץ ימני).

שימו לב: יש ספרים שמגדירים גובה של עלה כ־1 ושל עץ ריק כ־0 (מודדים בצמתים במקום בקשתות). חשוב לוודא איזו הגדרה הספר שלכם משתמש – בבגרות בישראל מקובל המוסכמה של 0 לעלה ו־-1 לעץ ריק.

דוגמה מצוירת

A B C D E F G
המסלול הארוך מהשורש: A → B → E → G. אורך 3 קשתות ⇒ גובה העץ = 3.
צומתגובה
D, F, C, G (עלים)0
E1
B2
A (שורש)3

אלגוריתם רקורסיבי

// מחזיר את גובה העץ בקשתות. עץ ריק = -1.
public static int height(BinNode<Integer> t) {
    if (t == null)
        return -1;
    int leftH  = height(t.getLeft());
    int rightH = height(t.getRight());
    return 1 + Math.max(leftH, rightH);
}

זמן ריצה: O(n) – כל צומת נבדק פעם אחת. שטח (stack של רקורסיה): O(h) – פרופורציוני לגובה.

נוסחאות שימושיות

  • גובה מינימלי בעץ בינארי עם n צמתים: ⌊log₂(n)⌋ (כשהעץ מאוזן).
  • גובה מקסימלי: n − 1 (כשהעץ מנוון – כמו רשימה מקושרת).
  • מספר צמתים מקסימלי בעץ בגובה h: 2^(h+1) − 1.
  • מספר עלים מקסימלי בעץ בגובה h: 2^h.

הקשר ל"רמה" ו"עלה"

גובה הוא מושג גלובלי של העץ. רמה של צומת היא ההפך כיוונית – נמדדת מהשורש כלפי מטה. גובה השורש = הרמה הגבוהה ביותר בעץ. עלים תמיד בגובה 0.

שאלות נפוצות

למה גובה של עץ ריק -1 ולא 0?

כדי שהנוסחה 1 + max(...) תחזיר 0 לעלה: max(-1, -1) + 1 = 0. אם מתחילים מ־0, יוצא 1 לעלה – זה מסבך.

מה ההבדל בין גובה לעומק?

עומק של צומת = מספר הקשתות מהשורש אליו. גובה של צומת = מספר הקשתות מהצומת לעלה הרחוק ביותר תחתיו. גובה העץ = גובה השורש = עומק העלה העמוק ביותר.

אפשר לחשב גובה בלולאה (איטרטיבית)?

כן, באמצעות BFS עם תור: מעבירים רמה־רמה וסופרים כמה רמות עברנו. הגובה = מספר הרמות − 1.

צריכים עזרה במבני נתונים?

מורים פרטיים יעזרו לכם להבין עצים, רקורסיה ובגרות מ"ה לאלף.

מצאו מורה פרטי