אם רוצים לשלוח את המידע של עץ בינארי(לא עץ חיפוש בינארי)
ולשמור אותו בקובץ ככה שניתן יהיה לשחזר את מבנה העץ, איך שומרים אותו לקובץ?
לפני 9 שנים
ע"י: 1_אורח_כללי
TONDE* createTreeFromPreAndIn(int* pre, int* in, int n
}
TONODE* root;
int index;
int(n<=0)
return NULL;
else
{
roote=createNewTnode(pre,NULL,NULL
index=findlLocation(in,n,pre[0
root->left=createTreeFromPreAndIn(pre+1,in,index)
root->right=createTreeFromPreAndIn=helper(pre+1+index, in+index-1, n-(index+1));
return root;
{
{
מצטער על האינדטציה..
מקווה שברור..
השארתי לכם לבד להבין איך לייצר את שני המערכים..
אם משהו לא ברור, תשאלו..
כרמל, עם ניסיון בעולם הגיימינג, החליטה להגשים את החלום ולהיכנס לתחום העיצוב.
חתיכת אתגר.
לאחר תקופה של חיפוש עבודה עצמאי היא הבינה שזה רק בזבוז זמן והחליטה להשקיע בקריירה שלה - ומצאה אותנו.
לבדיקת התאמה
לפני 16 שנים
ע"י: 1_אורח_כללי
שומרים את העץ כINORDER ולאחר מכך PREORDER
עד כן דיי פשוט (בדיוק אותה תוכנית להדפיס INORDER ) רק במקום להדפיס לשמור
אחרי כך אם רוצים לחלץ צריך לכתוב פונקציה שמוצאת אינדקס, ולפיו לחלק את העץ לשתיים
- פונקציה דיי קצרה
מקווה שהכיוון ברור
בתכנות C מתקדם במכללה האקדמית תל אביב יפו בשעור כתבנו את הפונקציות האלה
לא ממש ברור איך לשחזר את העץ.
מה זה פונקציה שמוצאת אינדקס? אינדקס של מה? מה הכוונה לחלק את העץ לשתיים?
אם תוכל להסביר קצת, או לצרף את מה שכתבתם אני אשמח..
לפני 16 שנים
ע"י: 1_אורח_כללי
שומרים את העץ כINORDER ולאחר מכך PREORDER
עד כן דיי פשוט (בדיוק אותה תוכנית להדפיס INORDER ) רק במקום להדפיס לשמור
אחרי כך אם רוצים לחלץ צריך לכתוב פונקציה שמוצאת אינדקס, ולפיו לחלק את העץ לשתיים
- פונקציה דיי קצרה
מקווה שהכיוון ברור
בתכנות C מתקדם במכללה האקדמית תל אביב יפו בשעור כתבנו את הפונקציות האלה
לפני 16 שנים
ע"י: 1_אורח_כללי
אתה פשוט יכול לשמור את זה במערך קטנטן.
מה שאתה צריך לשים לב אליו הוא זה שאם אתה נמצא בתא מס' X אזי הבן השמאלי שלך הוא 2X והבן הימני הוא 2X+1.
מכוא אתה משחזר את העץ כמו שהוא.
אבל אם העץ אינו שלם אזי תציין זאת ע"י איזהו FLAG שמציין שאין פה איבר.
מקווה שעזרתי
לא פתרון טוב - אם יש לך שרוך, הקובץ אקספוננציאלי במספר הקודקודים בעץ.
זה גם הפיתרון שאני מכיר, ואכן אם העץ הוא ענף אחד ארוך אז יש בזבוז מקום, אבל למישהו יש תשובה אחרת לשאלה הזו?
לפני 16 שנים
ע"י: 1_אורח_כללי
אתה פשוט יכול לשמור את זה במערך קטנטן.
מה שאתה צריך לשים לב אליו הוא זה שאם אתה נמצא בתא מס' X אזי הבן השמאלי שלך הוא 2X והבן הימני הוא 2X+1.
מכוא אתה משחזר את העץ כמו שהוא.
אבל אם העץ אינו שלם אזי תציין זאת ע"י איזהו FLAG שמציין שאין פה איבר.
מקווה שעזרתי
לא פתרון טוב - אם יש לך שרוך, הקובץ אקספוננציאלי במספר הקודקודים בעץ.
לפני 16 שנים
ע"י: maazg
אתה פשוט יכול לשמור את זה במערך קטנטן.
מה שאתה צריך לשים לב אליו הוא זה שאם אתה נמצא בתא מס' X אזי הבן השמאלי שלך הוא 2X והבן הימני הוא 2X+1.
מכוא אתה משחזר את העץ כמו שהוא.
אבל אם העץ אינו שלם אזי תציין זאת ע"י איזהו FLAG שמציין שאין פה איבר.
מקווה שעזרתי
לפני 16 שנים
ע"י: 1_אורח_כללי
אולי גם קוד פרופר (Prufer) ?
http://en.wikipedia.org/wiki/Pr%C3%BCfer_sequence
לפני 16 שנים
ע"י: 1_אורח_כללי
יש לי רעיון... לא בטוחה אם הוא הנכון ביותר
לרוץ על כל איברי העץ כל פעם ש"עוברים" מאיבר אב לבן שומרים את האיבר אב (משתנה) את האיבר בן שומרים בקובץ עם משתנה נוסף - משתנה האב.
הסבר בעברית: לכל איבר בעץ שומרים את איבר האב שלו
נראה לי שזה יעבוד
אך אני לא יודעת אם זה אופטימלי
לפני 16 שנים
ע"י: eminemm
שאלו בחברת סטארטאפ קטנה..ברחובות
כן , מדובר בקובץ טקסט
מה הדרך הטובה ביותר לעשות זאת
אני אמרתי לעשות inorder+preorder ולשמור אבל האלגוריתם קשה ומסובך ..יש דרך יותר טובה..מישהו יודע??
חג שמח..
לפני 16 שנים
ע"י: 1_אורח_כללי
יש הרבה דרכים לעשות את זה...(בהנחה שאחנו מדברים ל קובץ TXT)
השאלה מה הדרך הנכונה?
איפה שאלו את השאלה הזאת?
לפני 16 שנים
ע"י: 1_אורח_כללי
מה לגבי BFS על העץ ולכתוב את ערכי הצמתים לקובץ,
ולאחר מכן כדי לבנות את העץ מחדש אפשר לעשות שוב וואריאציה על BFS
כדי לבנות צמתים חדשים מהשורש עד לרמה התחתונה.