עבור לתוכן

עזרה בעצים בינארים בג'אווה

Featured Replies

פורסם

2sbrbz7.jpg

נניח שהמחלקה שלהלן מממשת עת חיפוש בינארי (עץ ממוין)

לכל אובייקט במחלקה NODE יש גם שדה _father שמצביע על האב


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

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


public static Node what (Node root)
{
if (root == null)
return null;
if (root.getRightSon() != null)
return f (root.getRightSon());
return g (root);
}


public static Node f(Node root)
{
if (root.getLeftSon() == null)
return root;
return f (root.getLeftSon());
}


public static Node g (Node node)
{
if (node.getFather() == null)
return null;
if (node.getFather().getLeftSon() == node)
return node.getFather();
return g(node.getFather());
}

הבעיה שלי היא שאני טיפה מבולבל מה קורה בכל פעם שאני מחזיר בן, האם אני נשאר באותו מקום בו החזרתי או חוזר בחזרה לאותו קודקוד שהחזרתי ממנו את הבן ?

ועוד שאלה אחת: מה מבצעת השיטה what כאשר היא מקבלת צומת כלשהו בעץ חיפוש בינארי כלשהו ? הסבירו בקצרה מה מבצעת השיטה ולא כיצד היא מבצעת זאת.

מה משמעותו של הערך שהוחזר ? (הפרמטר המועבר אינו בהכרח שורש העץ)

פורסם

תנסה קודם כל להבין מה f עושה, כי היא יחסית פשוטה. תנסה להבין מה המשמעות של כזה בהינתן שזה עץ חיפוש בינארי.

אחר כך תנסה להבין מה g עושה. זה קצת יותר מורכב מ-f.

משם תנסה להבין מה what עושה.

לא כל כך ברורה לי השאלה הראשונה שלך. מה זאת אומרת "נשאר באותו מקום"?

ארכיון

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

דיונים חדשים