שאלה בעץ בינארי - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה בעץ בינארי


falukky

Recommended Posts

יש לי שאלה שפתרתי והיות ואני די מתקשה בסוג הזה של השאלות הייתי רוצה להתייעץ.

נניח שהמחלקה Node שלהלן מממשת עץ בינרי:

public class Node
{
private int _number;
private Node _leftSon, _rightSon;
public Node (int number)
{
_number = number;
_leftSon = null;
_rightSon = null;
}
public int getNumber()
{return _number; }
public Node getLeftSon()
{return _leftSon; }
public Node getRightSon()
{return _rightSon; }
}

נתונות שתי השיטות הבאות:

f המקבלת כפרמטרים שני מספרים שלמים

ו-what המקבלת כפרמטר שורש של עץ בינרי (מטיפוס Node):

public static int f (int a, int b)
{
return (a>b) ? a:b;
}
public static int what (Node root)
{
if (root == null)
return -1;
return (f (what (root.getLeftSon()),
what (root.getRightSon())) +1);
}

מה תחזיר השיטה what היא תקבל את השורש של העץ root הבא?

123.png

לי יצא 4 אבל אין לי מושג אם זה נכון.

קישור לתוכן
שתף באתרים אחרים

לא התעמקתי יותר מידי אבל אהי חושב שהוא מחזיר 2 , הוא סופר את הבנים הימניים ..

או שהוא סופר את אורך המסלול שנגמר בעלה ימני . (נראה לי יותר ניחוש א)

- - - תגובה אוחדה: - - -

*אהי = אני .

קישור לתוכן
שתף באתרים אחרים

למישהו אולי יש class של זה עלמנת שאני יוכל להריץ ולבדוק ?

קצת לא מובן לי כל הקונספט של זה (איך אני יוצר בן ימני או שמאלי, מדפיס וכו') לכן אני לא יודע איך לכתוב אחד כזה ויש לי עוד מלא תרגילים דומים.

קישור לתוכן
שתף באתרים אחרים

הוא יחזיר 3.

public static void main(String []args){
Node n = new Node(32);
n.setRight(4);
n.setLeft(12);
n.right().setLeft(5);
n.right().left().setLeft(1);
n.left().setRight(3);
System.out.println(Node.what(n));
}

שים לב שהוספתי מתודות מסוג setter וקיצרתי את getLeftSon ל-left (כנ"ל לגבי right)

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...