You are on page 1of 4

‫בס"ד‬

‫נתון העץ הבא‪:‬‬

‫עליכם לבצע טבלאות מעקב לפונקציות שונות שרצות על העץ הזה‪.‬‬


‫כל קריאה לפונקציה כוללת את שם הפונקציה‪ ,‬ואת הרפרנס לצומת עליה הפונקציה מתבצעת‪ .‬כדי להקל על‬
‫הרישום של המעקב‪ ,‬לכל צומת בעץ ניתן מספר שהוא ייצג את הרפרנס אליה בטבלת המעקב‪.‬‬

‫‪A:0007‬‬

‫‪B:0005‬‬

‫‪C:0050‬‬

‫‪D:0003‬‬

‫‪E:0045‬‬

‫‪F:0080‬‬

‫‪G:0001‬‬

‫‪H:0004‬‬

‫‪I:0030‬‬

‫עקבו בטבלת מעקב אחרי הקודים הבאים‪.‬‬


‫בכל טבלה יש להזין קריאות מלאות לפונקציות‪ ,‬צומת נוכחית‪ ,‬מספר סידורי של קריאות עתידיות‪ .‬תנאים‪,‬‬
‫הדפסות וערכים מוחזרים‪ ,‬במקרה שמוחזרת קריאה לפונקציה‪ ,‬או ערך שמתקבל כתוצאה מקריאה לפונקציה‬
‫(תרגילים ‪ )3-4‬יש לכתוב את הקריאות לפונקציה עם = (כסימן לכך שאיננו יודעים עדיין מה יחזור )‬
‫וכשמגיעה תוצאה להוסיף את התוצאה‪:‬‬
)1

public static void printTree(BinNode<T> bn1)

1.System.out.print(bn1.getValue());

2.if (bn1.hasLeft()) printTree(bn1.getLeft());

3.if (bn1.hasRight()) printTree(bn1.getRight());

‫צומת נוכחית‬ ‫הדפסה‬ )(Bn1.hasLeft ‫קריאה‬ )(Bn2.hasRight ‫קריאה‬


‫לפונקציה‬ ‫לפונקציה‬
A 7 True printTree(B) True printTree(c
)
B

)2

public static void printTree(BinNode<T> bn1)

2.if (bn1.hasLeft()) printTree(bn1.getLeft());

1.System.out.print(bn1.getValue()(;

3.if (bn1.hasRight()) printTree(bn1.getRight());

‫צומת נוכחית‬ )(Bn1.hasLeft ‫קריאה לפונקציה‬ (Bn2.hasRight ‫קריאה לפונקציה‬ ‫הדפסה‬


)
)3

public static int sumTree (BinNode<Integer> bn1)

1.int sum = bn1.getValue();

2.if (bn1.hasLeft()) sum += sumTree(bn1.getLeft());

3.if (bn1.hasRight()) sum+=sumTree(bn1.getRight());

return sum

‫צומת‬ sum )(Bn1.hasLeft ‫קריאה‬ sum )(Bn2.hasRight ‫קריאה‬ Sum Return


‫נוכחית‬ ‫לפונקציה‬ ‫לפונקציה‬

)4

public static int sumTree2 (BinNode<Integer> bn1)

if (bn1==null) return 0;

return sumTree2(bn1.getLeft()) + sumTree2(bn1.getRight()) + bn1.getValue();

!‫בנו טבלת מעקב לקוד זה בעצמכם‬

.‫– כתבו קוד רקורסיבי שמקבל עץ בינארי של שלמים ומחשב את ממוצע הערך של כל צומת‬VsCode ‫מטלה ב‬
.)7 ‫ יוחזר הערך‬70 ‫ שסכומם‬,‫ צמתים‬10 ‫(אם יש‬
0 ‫כתבו פונקציה רקורסיבית שמקבלת עץ בינארי ומוחק את כל הצמתים שערכם‬
‫כתבו פונקציה רקורסיבית שמקבלת עץ בינארי ומספר שלם ומוחקת את כל הצמתים שערכם שווה למספר‬
‫שהתקבל‪.‬‬

You might also like