עבור לתוכן

עץ אדום שחור

Featured Replies

פורסם

מנסה לבנות עץ אדום שחור.

כדי לחסוך בזיכרון- אני בונה צומת שאליה יצביעו כל העלים (במקום שכל אחד יצביע לNULL כל העלים והאבא של השורש מצביעים לצומת הזאתי)

אז- כשאני עושה constructor (ב++C) יש מצביע לבן ימין (NULL), מצביע לבן שמאל (NULL) ומצביע לאבא-> מיהו?

פורסם

איך בדיוק זה חוסך בזיכרון? מצביע ל- NULL תופס בדיוק כמו מצביע לצומת.

פורסם
  • מחבר

אז אולי לא חוסך מקום בזיכרון

(ככה אמרו לי לעשות)

אבל השאלה עדיין נשארת- כשאני מכניסה צומת חדש לעץ איך אני מאתחלת את המצביע לאבא שיצביע לאבא?????

פורסם

מה הבעיה? הרי האבא קיים, לא?

תעבירי את האבא ב- constructor של הצומת שאת יוצרת.

פורסם
  • מחבר

זו בדיוק השאלה: איך אני עושה את זה? ???

למה המצביע לאבא מאותחל בconstructor?

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

פורסם

את יכולה ליצור עץ עם CTOR כלשהו(שיצור גם את איבר הדמה שאת רוצה), ולהוסיף איבר ע"י פונ מסויימת(למשל insert).

תרשמי כאן את ההגשרה של הCLASS שאת מעוניינת ליצור.

פורסם
  • מחבר

לא הבנתי מילה (כמעט) ממה שהצעת.

אני חשבתי לעושת דבר כזה:


class NodeBR
{

public:
NodeBR* left;
NodeBR* right;
NodeBR* parent;
T value;
char color;

NodeBR (T val);
NodeBR (T val, NodeBR*l, NodeBR*r, NodeBR*p, char col);
};

למה אני מאתחלת את המצביע לאבא???


פורסם

אני מניח שאת מנסה בסך הכל ליצור את העלה. כשתרצי להוסיף אותו לעץ, את צריכה לתת לו את האבא.

למשל משהו כזה:


i<-getinfo()
f<-find_father_before_add(i.value)
NodeBR n(i.value, nil,nil,f,i.color)


עשיתי קצת ערבוביה בין פסאודו קוד לC++, אבל אני מניח שתביני(השעה מאוחרת...).

ארכיון

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

דיונים חדשים