נתונה המחלקה Range שיש לה שתי תכונות: low -- מספר מטיפוס שלם. high -- מספר מטיפוס שלם, גדול מ-low. הנח שלכל תכונה הוגדרו ב-Java הפעולות get/set (ובC# Get/Set). עץ טווחים הוא עץ שאיבריו הם אובייקטי Range. עץ טווחים מסודר הוא עץ ריק, או עץ שבו לכל צומת מתקיימים: (1) אם יש בן שמאלי -- ה-low של הצומת שווה ל-low של הבן השמאלי, וה-high של הצומת גדול או שווה ל-high של הבן השמאלי; (2) אם יש בן ימני -- ה-high של הצומת שווה ל-high של הבן הימני, וה-low של הצומת קטן או שווה ל-low של הבן הימני; (3) אם יש שני בנים -- ה-high של הבן השמאלי קטן מה-low של הבן הימני. השאלה כוללת סעיף יחיד (ללא תת-סעיפים נוספים) ולכן מסומנת כסעיף א.
נתונה המחלקה Range שיש לה שתי תכונות: low -- מספר מטיפוס שלם. high -- מספר מטיפוס שלם, גדול מ-low. הנח שלכל תכונה הוגדרו ב-Java הפעולות get/set (ובC# Get/Set). עץ טווחים הוא עץ שאיבריו הם אובייקטי Range. עץ טווחים מסודר הוא עץ ריק, או עץ שבו לכל צומת מתקיימים: (1) אם יש בן שמאלי -- ה-low של הצומת שווה ל-low של הבן השמאלי, וה-high של הצומת גדול או שווה ל-high של הבן השמאלי; (2) אם יש בן ימני -- ה-high של הצומת שווה ל-high של הבן הימני, וה-low של הצומת קטן או שווה ל-low של הבן הימני; (3) אם יש שני בנים -- ה-high של הבן השמאלי קטן מה-low של הבן הימני. השאלה כוללת סעיף יחיד (ללא תת-סעיפים נוספים) ולכן מסומנת כסעיף א.
public class Range {
private int low;
private int high;
public Range(int low, int high) { this.low = low; this.high = high; }
public int getLow() { return low; }
public void setLow(int low) { this.low = low; }
public int getHigh() { return high; }
public void setHigh(int high) { this.high = high; }
}
public class BinNode<T> {
private T value;
private BinNode<T> left;
private BinNode<T> right;
public BinNode(T value) { this.value = value; this.left = null; this.right = null; }
public T getValue() { return value; }
public void setValue(T value) { this.value = value; }
public BinNode<T> getLeft() { return left; }
public void setLeft(BinNode<T> left) { this.left = left; }
public BinNode<T> getRight() { return right; }
public void setRight(BinNode<T> right) { this.right = right; }
}
דוגמה לעץ טווחים מסודר: שורש [1,10]; בן שמאלי [1,4] עם בן שמאלי [1,3]; בן ימני [5,10] עם בנים [5,6] ו-[8,10]
[1,10]
/ \
[1,4] [5,10]
/ / \
[1,3] [5,6] [8,10]
כתוב פעולה חיצונית בוליאנית בשם order (ב-C#: Order), המקבלת עץ טווחים (או עץ ריק), ומחזירה true אם העץ הוא עץ טווחים מסודר, אחרת -- מחזירה false.
public static boolean order (BinNode<Range> tree)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.