מבני נתונים ואלגוריתמים - מחברת קורס/מבני נתונים/עצי חיפוש בינריים/תרגילים/יחס צאצא-הורה/תשובה
משפט כללי
[עריכה]כדי לפתור את התשובה, נוכיח ראשית את המשפט הפשוט הבא:
משפט: בעץ חיפוש בינרי בעל מפתחות שונים זה מזה, נניח שצומת מחזיק מפתח כלשהו. אז:
|
להלן דוגמה למה שהמשפט אומר.
דוגמה: בתרשים הבא, אינו צאצא ימני של אף צומת. צמתי המפתחות הקטנים ממנו (הצבועים באפור), כולם בתת העץ הימני שלו. לעומת זאת, בתרשים הבא, הוא צאצא ימני (לא ישיר) של . צמתי המפתחות הקטנים ממנו (הצבועים באפור), בתת העץ הימני שלו וגם בתת העץ השמאלי של . |
עכשיו תורכם: השתמש בתכונת הBST כדי להוכיח את המשפט. |
הקשר ללא מידע נוסף
[עריכה]מהמשפט הכללי ברור שאי אפשר לקבוע האם הצומת של הוא צאצא של הצומת של . ייתכן שהצומת של הוא צאצא שמאלי של הצומת של , אך אם הצומת של הוא צאצא ימני של צומת כלשהו, ייתכן שהצומת של הוא צאצא שמאלי של אותו הצומת.
הקשר עם מידע נוסף
[עריכה]ראשית, ברור שכל אחד בנפרד מסדרו של צומת במעבר in-order, post-order, או מספר צאצאיו, אינו מספיק כדי לקבוע יחס צאצא-אב.
נתבונן שוב במקרה בו צומת הוא צאצא ימני של צומת .
- אם , אז יודפס לפני במעבר in-order בכל מקרה. אבל אם , אז יכול להיות צאצא שמאלי של , או צאצא שמאלי של הורה של (לדוגמה ).
- באופן דומה, אם , אז יודפס לפני במעבר post-order בכל מקרה. אבל שוב, אם , אז יכול להיות צאצא שמאלי של , או צאצא שמאלי של הורה של (לדוגמה ).
- כפי שהתרשים מראה, אם , אין בהכרח שום קשר בין מספר האיברים בתת-העץ של לבין זה של .
לעומת זאת, השילוב של סדר post-order וdescendants מספיק.
משפט: נגדיר:
אז כל צומת בתת העץ השמאלי הוא בעל מספר post-order ב. |
הוכחה: מספרי הpost-order של ילדו השמאלי של הם מספרים עוקבים, שהאחרון שבהם הוא .
מהמשפט האחרון ברור כיצד יש למצוא האם צומת כלשהו nd-y
הוא צאצא של צומת כלשהו nd-x
, בהנחה שתוכן הראשון הוא , תוכן השני הוא , ו:
- אם ל
nd-x
אין ילד שמאלי - התשובה שלילית. - אחרת:
- קובעים כ את
Postorder-Num(nd.l-child)
. - קובעים כ את
Descendants(nd.l-child)
. - בודקים האם
{Postorder-Num(nd-y)
גדול או שווה ל.
- קובעים כ את
עכשיו תורכם: חשוב האם שילובי פונקציות שונים יפתרו את הבעיה גם כן. |