פורסם 2013 בינואר 1512 שנים יש לי את המבנה הזה typedef struct node {int data;node*left,*right}Tree;אני צריך לעשות פונקציה שיוצרת עץ ופונקציה שמוסיפה מספר לעץאיך אני עושה את זה?תודה
פורסם 2013 בינואר 1512 שנים בוא נתחיל לאט. נניח שכרגע יש עץ ריק. מה אתה עושה? איך אתה מוסיף את הראשון?
פורסם 2013 בינואר 1512 שנים בוא נתחיל עוד יותר לאט. ההגדרה של המבנה הזה לא תקנית. בC זה לא יתקמפל כי אין כזה דבר node - יש רק struct node. ב++C זה יתקמפל, אבל אין שום סיבה לtypedef במקרה זה.
פורסם 2013 בינואר 1512 שנים מחבר אני יודע שצריך לכתוב struct זה לא הבעיה.אני צריך לפני פונקציית הוספה לכתוב פונקציה שיוצרת עץ.עשיתי את הפונקציה הזו Tree* create(){Tree* new=(Tree*)malloc(sizeof(Tree))return new;}איך אני עושה את הפונקציית הוספה?
פורסם 2013 בינואר 1512 שנים לא מוגדר איזה סוג של עץ בינארי זה . אפשר להוסיף nodes באופן שרירותי. השאלה למה מנסים להגיע. אם רוצים להגיע לפיזור מקסימאלי אני חושב חושב שbredth first search זאת הדרך. בשביל binary search tree יש חוקים מאוד ברורים. יש גם עצים יותר מסובכים שהם בינארים כמו red black tree . החלק של ההוספה זה לרוב החלק הקל. מחיקה זה יותר קשה. טיפול בעץ דומה לlinked list שזה בעצם עץ עם ענף אחד (unary tree ). עדיין זה לא מבנה נתונים מסובך אבל "עץ" זה מבנה נתונים די נפוץ. יש סיכוי שפתרתי את הבעיה אבל לא כתבתי פה שום קוד. בקוד צריך לשים לב לpointers והקצאות דינאמיות בכדי לא ליפול .
פורסם 2013 בינואר 1512 שנים כל NODE שאתה מוסיף אתה מקצה לו זיכרון. השאלה היא לאן אתה רוצה להוסיף NODE? הראשון יהיה השורש כמובן. אח"כ לאן הולך השני?
פורסם 2013 בינואר 1612 שנים זה לא שאתם לא צודקים אבל למה לרוץ? קודם כל נתחיל מהמקרה שרוצים להוסיף ועדיין אין כלום. אפשר לראות את הקוד לזה? דרך אגב, למי שהציע עצים אחרים, קודם כל תיתן לו לעשות עץ רגיל אחרי זה אפשר לאזן אותו ולסבך עוד ועוד. כרגע הוא אפילו לא צריך להיות מאוזן.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.