מחפש פתרון, לאו דווקא רקורסיבי..

nas636

New member
מחפש פתרון, לאו דווקא רקורסיבי..

יש לכתוב פונקציה שמקבלת עץ בינארי ומחזירה אם הוא עץ בינארי מלא או לא. (מלא=אם לכל צומת יש שני בנים בדיוק,מלבד העלים, והעלים כולם באותה רמה). תודה מראש.
 

immortalus

New member
המ...

תלוי קצת באילו מן דברים העץ שלך יודע לעשות אבל הנה פתרון כללי: אתחול: רק במסלול ימין עד הסוף וזכור את עומק העץ. עכשיו נרצה לוודא שכל העלים באותו העומק: בצע POST-ORDER רקורסיבי עם סכימת עומק (משמע בכל פעם שאתה יורד למטה אתה מוסיף 1 לסוכם). בכל פעם שאתה מגיע לעלה, תבדוק אם אתה נמצא בעומק שמצאת למעלה. אם לא, אז אתה יודע שהעץ לא מלא... אם סיימת ולא מצאת סטייה, העץ מלא... סה"כ סיבוכיות O(n. כנראה שאפשר לשפר עם כל מני טריקים, אבל זה אי-איזה פתרון טריביאלי...
 

vinney

Well-known member
האתחול מיותר

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

immortalus

New member
מבחינה פרקטית, האיתחול פשוט יותר למימוש

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