You are on page 1of 71

‫קורס תכנות בשפת ‪C‬‬

‫פרק ‪20‬‬
‫מבני נתונים – עצים בינאריים‬
‫‪Binary Trees‬‬

‫ד"ר שייקה בילו‬


‫יועץ ומרצה בכיר למדעי המחשב וטכנולוגית מידע‬
‫מומחה למערכות מידע חינוכיות‪ ,‬אקדמיות ומנהליות‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪1‬‬ ‫‪Shayke Bilu PhD‬‬
‫חידה לחימום‬
‫‪2‬‬

‫המספרים ‪ 1,2,3,…,N‬מסודרים בשורה (כאשר ‪ N‬הוא מספר‬ ‫‪‬‬


‫זוגי)‪.‬‬
‫כל שחקן מפעיל בתורו את אחד מהאופרטורים ‪ - ,+‬או * על שני‬ ‫‪‬‬
‫מספרים סמוכים כרצונו‪ ,‬ורושם את התוצאה במקום שני‬
‫המספרים‪.‬‬
‫המשחק מסתיים כאשר נותר מספר אחד בלבד‪.‬‬ ‫‪‬‬
‫אם המספר שנותר אחרון הוא אי‪-‬זוגי ‪ -‬השחקן הראשון מנצח‪.‬‬ ‫‪‬‬
‫ואם המס' שנותר אחרון זוגי – השחקן השני מנצח‪.‬‬
‫פתחו אסטרטגיה מנצחת עבור אחד השחקנים‪.‬‬ ‫‪‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עצים‬
‫‪3‬‬

‫יישומים רבים במחשב עושים שימוש בעצים‪.‬‬ ‫‪‬‬


‫לדוגמא‪ ,‬מבנה התיקיות בדיסק הקשיח מאורגן בצורת עצים (כוננים‬ ‫‪‬‬
‫שמכילים תיקיות‪ ,‬שמכילות תיקיות‪-‬משנה‪ ,‬שמכילות תיקיות‪-‬משנה‪,‬‬
‫וכו')‪.‬‬
‫פרוייקט ב‪ Microsoft Visual C++-‬מכיל קבצים רבים‪ ,‬מסוגים‬ ‫‪‬‬
‫שונים‪ ,‬המאורגנים בצורת עץ‪.‬‬
‫נגדיר מושגים לגבי‬ ‫‪‬‬
‫עצים כלליים‪ ,‬ולאחר מכן‬
‫נעסוק בעיקר בסוג מסוים‬
‫של עצים הנקראים‬
‫'עצים בינאריים'‪.‬‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
‫עצים‬
‫‪4‬‬

‫‪ ‬נתון עץ (‪ ,)tree‬ונגדיר עליו את המושגים הבאים‪:‬‬


‫צומת (‪ – )node‬איבר בעץ‪.‬‬ ‫‪‬‬
‫הורה (‪ – )parent‬איבר קודם לצומת‪.‬‬ ‫‪‬‬
‫ילד (‪ – )child‬איבר עוקב לצומת‪.‬‬ ‫‪‬‬
‫שורש (‪ – )root‬צומת שאין לו הורה‪.‬‬ ‫‪‬‬
‫עלה (‪ – )leaf‬צומת שאין לו ילדים‪.‬‬ ‫‪‬‬
‫אחים (‪ – )siblings‬צמתים שהם ילדים לאותו הורה‪.‬‬ ‫‪‬‬
‫‪A‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪D‬‬ ‫‪ ‬כמה עלים יש בעץ זה?‬
‫‪E‬‬ ‫‪F‬‬ ‫‪G‬‬ ‫‪H‬‬ ‫‪I‬‬
‫‪J‬‬ ‫‪K‬‬
‫‪L‬‬ ‫‪M‬‬ ‫‪N‬‬ ‫‪O‬‬
‫‪P‬‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
‫עצים‬
‫‪5‬‬
‫‪ ‬הגדרות נוספות‪:‬‬
‫צאצא (‪ – )descendant‬צומת הוא צאצא של צומת אחר‪ ,‬אם‬
‫הוא ילדו‪ ,‬או אם הוא צאצא של ילדו‪.‬‬
‫‪ ‬נשים לב שהגדרת הצאצא היא רקורסיבית‪.‬‬
‫‪ ‬הצומת ‪ K‬הוא צאצא של כמה צמתים?‬
‫הצומת ‪ K‬הוא צאצא של ‪ ,A‬צאצא של ‪ C‬וצאצא של ‪.G‬‬ ‫‪‬‬
‫‪A‬‬
‫‪B‬‬ ‫‪D‬‬
‫‪C‬‬
‫‪E‬‬ ‫‪F‬‬ ‫‪G‬‬ ‫‪H‬‬ ‫‪I‬‬
‫‪J‬‬ ‫‪K‬‬
‫‪L‬‬ ‫‪M‬‬ ‫‪N‬‬ ‫‪O‬‬
‫‪P‬‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
‫עצים‬
‫‪6‬‬

‫‪ ‬עוד הגדרות‪:‬‬
‫הורה קדמון (‪ – )ancestor‬צומת ייקרא 'הורה קדמון' של צומת אחר‪,‬‬ ‫‪‬‬
‫אם הוא הורה שלו או אם הוא הורה קדמון של הורהו‪.‬‬
‫תת‪-‬עץ (‪ – )sub tree‬צומת וצאצאיו מהווים עץ בפני עצמו‪ .‬עץ זה‬ ‫‪‬‬
‫הוא תת‪-‬עץ של העץ המקורי‪.‬‬
‫‪A‬‬
‫‪B‬‬
‫‪C‬‬
‫‪D‬‬ ‫‪ ‬הצמתים הצבועים בכחול‬
‫‪E‬‬ ‫‪F‬‬ ‫‪G‬‬ ‫‪H‬‬ ‫‪I‬‬ ‫מהווים תת‪-‬עץ של העץ המקורי‪.‬‬
‫‪J‬‬ ‫‪K‬‬ ‫שורשו של תת‪-‬העץ הזה הוא הצומת ‪.K‬‬
‫‪L‬‬ ‫‪M‬‬ ‫‪N‬‬ ‫‪O‬‬

‫‪P‬‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
‫עצים‬
‫‪7‬‬

‫‪ ‬קבעו האם הטענה הבאה נכונה או שקרית‪:‬‬


‫הצומת ‪ A‬הוא הורה‪-‬קדמון של כל הצמתים בעץ‪.‬‬ ‫‪‬‬

‫‪A‬‬ ‫‪ ‬עץ מציית לכמה כללים‪:‬‬


‫‪B‬‬ ‫‪D‬‬
‫‪C‬‬ ‫בעץ קיים רק שורש אחד‪.‬‬ ‫‪‬‬

‫‪E‬‬ ‫‪F‬‬ ‫‪G‬‬ ‫‪H‬‬ ‫לכל צומת שאינו השורש ‪I‬‬ ‫‪‬‬

‫‪J‬‬ ‫יש הורה יחיד‪.‬‬


‫‪K‬‬
‫כל צומת (לבד מהשורש) הוא‬ ‫‪‬‬
‫‪L‬‬ ‫‪M‬‬ ‫‪N‬‬ ‫‪O‬‬ ‫צאצא של השורש‪.‬‬
‫‪P‬‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
8

?‫שאלות‬

SCE-Chapter-20-Binary Trees Shayke Bilu PhD


‫עץ בינארי‬
‫‪9‬‬

‫‪ ‬עץ בינארי (‪ )Binary Tree‬הוא עץ שיש בו לכל היותר שני ילדים‬


‫לצומת‪ .‬את הילדים נכנה הילד השמאלי והילד הימני‪.‬‬
‫‪ ‬כל אחד מאלה‪ ,‬אם הוא קיים‪ ,‬הוא שורש של עץ‪:‬‬
‫הילד השמאלי הוא שורשו של תת‪-‬עץ שמאלי (‪.)left sub tree‬‬ ‫‪‬‬

‫הילד הימני הוא שורשו של תת‪-‬עץ ימני (‪.)right sub tree‬‬ ‫‪‬‬

‫‪ ‬מי מבין העצים בשקף הבא הוא עץ בינארי? מצא‪ ,‬נמק והסבר‪.‬‬
‫‪ ‬עץ בינארי הוא טנ"מ שימושי‪ ,‬ולכן נעסוק בעיקר בו‪ ,‬ופחות בעץ‬
‫כללי‪.‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי‬
10

SCE-Chapter-20-Binary Trees Shayke Bilu PhD


‫עץ בינארי‬
‫‪11‬‬

‫‪ ‬רמה (‪ )level‬של צומת מסוים בעץ היא אורך המסלול‬


‫מהשורש אליו‪ ,‬כלומר – המרחק של הצומת מהשורש‪.‬‬
‫‪ ‬רמת השורש היא תמיד ‪ ,0‬והרמה של כל צומת אחר בעץ גדולה‬
‫באחד (‪ )1‬מהרמה של ההורה שלו‪.‬‬
‫‪ ‬גובה עץ (‪ )tree height‬הוא המרחק‬
‫הגדול ביותר מהשורש לעלה כלשהו של‬
‫העץ‪ ,‬כלומר – זוהי הרמה הגבוהה‬
‫ביותר של העץ‪.‬‬
‫‪ ‬מהו גובה העץ?‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי‬
‫‪12‬‬

‫‪ ‬בדומה למחסנית או תור‪ ,‬גם עץ בינארי יכול להיות ריק‪ ,‬כלומר –‬


‫בלי צמתים כלל‪ .‬כאשר העץ אינו ריק‪ ,‬ייתכן שהתת‪-‬עץ השמאלי‪,‬‬
‫הימני או שניהם גם יחד ריקים‪.‬‬
‫מה נוכל לומר על התת‪-‬עצים של עלה?‬ ‫‪‬‬

‫‪ ‬נשים לב שניתן להגדיר עץ בינארי גם באופן רקורסיבי‪:‬‬


‫עץ בינארי הוא‪ :‬עץ ריק (כלומר‪ ,‬בלתי צמתים)‬ ‫‪‬‬

‫שורש ושני תת‪-‬עצים‪ ,‬ימני ושמאלי‪ ,‬שכל אחד‬ ‫או‪:‬‬ ‫‪‬‬

‫מהם הוא עץ בינארי‪.‬‬


‫שני עצים בינאריים אלו זרים זה לזה‪ ,‬כלומר – אין‬
‫להם צמתים משותפים‪.‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי‬
‫‪13‬‬

‫‪ ‬ההגדרה הרקורסיבית הזו מאפשרת לכתוב בקלות‬


‫אלגוריתמים רקורסיביים שפועלים על עצים בינאריים‪.‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי – תרגול ‪1‬‬
‫‪14‬‬

‫‪ ‬נתון העץ הבינארי הבא עברו עליו והשלימו‪:‬‬


‫מס' הצמתים בעץ הוא‬ ‫‪.1‬‬
‫מס' העלים בעץ הוא‬ ‫‪.2‬‬
‫השורש של תת‪-‬עץ השמאלי של ‪ E‬הוא‬ ‫‪.3‬‬
‫של ‪C‬‬ ‫‪ W‬הוא‬ ‫‪.4‬‬
‫של ‪B‬‬ ‫‪ C‬הוא‬ ‫‪.5‬‬
‫הגובה של העץ הוא‬ ‫‪.6‬‬
‫הצאצאים של ‪ E‬הם‬ ‫‪.7‬‬
‫הצמתים ברמה ‪ 2‬בעץ הם‬ ‫‪.8‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי – תרגול ‪2‬‬
‫‪15‬‬

‫‪ ‬עבור כל אחת מהטענות הבאות‪ ,‬ציינו האם היא נכונה או לא‪:‬‬


‫• ‪ B‬הוא צאצא של ‪ C ,E‬ו‪.W-‬‬
‫• ‪ S‬ו‪ K-‬הם אחים‪.‬‬
‫• ל‪ E-‬יש שני ילדים‪.‬‬
‫• ‪ K‬הוא ברמה ‪.3‬‬
‫• אם הצמתים נמצאים באותה‬
‫רמה‪ ,‬אז הם אחים‪.‬‬
‫• ‪ C‬הוא הורה קדמון של ‪ E‬ו‪.B-‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי – תרגול ‪3‬‬
‫‪16‬‬

‫‪ ‬נבנה ממשק עבור טיפוס הנתונים המופשט (טנ"מ) 'עץ בינארי'‪.‬‬


‫‪ ‬נגדיר פעולת ממשק בשם אתחל‪-‬עץ שמחזירה עץ בינארי ריק‪ ,‬ופעולת ממשק‬
‫בשם בנה‪-‬עץ שמקבלת כפרמטרים שני עצים ואיבר‪ ,‬ומחזירה עץ חדש‬
‫שבשורשו עומד האיבר‪ ,‬ושני התת‪-‬עצים שלו הם העצים שהועברו‬
‫‪T3‬‬ ‫כפרמטרים‪.‬‬
‫‪7‬‬ ‫‪ ‬לדוגמא‪ ,‬נביט באלגוריתם הבא‪:‬‬
‫‪T1‬‬ ‫‪T2‬‬
‫אתחל‪-‬עץ ‪T1 ‬‬ ‫‪‬‬
‫‪T6‬‬ ‫אתחל‪-‬עץ ‪T2 ‬‬ ‫‪‬‬
‫‪T4‬‬ ‫‪T5‬‬ ‫בנה‪-‬עץ (‪T3  )T1,T2,7‬‬ ‫‪‬‬

‫‪ ‬נניח ש‪ T4 -‬ו‪ T5-‬הם העצים הבאים‪:‬‬


‫‪ ‬לאחר שמבצעים את ההוראה הבאה‬
‫כיצד יראה העץ ‪?T6‬‬ ‫בנה‪-‬עץ (’‪T6  )T4,T5,’e‬‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
‫עץ בינארי‬
‫‪17‬‬

‫כדי לנוע על העץ נזדקק לשתי פעולות ממשק‪ :‬האחת – גישה‬ ‫‪‬‬
‫מצומת אל התת‪-‬עץ השמאלי‪ ,‬והאחרת – גישה מצומת אל התת‪-‬‬
‫עץ הימני‪.‬‬
‫פעולת הממשק תת‪-‬עץ שמאלי מקבלת עץ בינארי שאינו ריק‪,‬‬ ‫‪‬‬
‫ומחזירה את התת‪-‬עץ השמאלי של שורשו‪.‬‬
‫באופן דומה מגדירים את פעולת הממשק תת‪-‬עץ ימני‪.‬‬ ‫‪‬‬
‫באמצעות שתי פעולות ממשק אלה נוכל להגיע לכל אחד מצומתי‬ ‫‪‬‬
‫העץ‪.‬‬
‫עתה נרצה להוסיף פעולות ממשק שיאפשרו לקרוא את תוכנו של‬ ‫‪‬‬
‫צומת בעץ ולשנות אותו‪.‬‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
‫עץ בינארי‬
‫‪18‬‬

‫מכיוון שכל צומת הוא שורש של תת‪-‬עץ‪ ,‬מספיק להגדיר‬ ‫‪‬‬


‫פעולות אחזור ועדכון לשורש‪.‬‬
‫פעולת הממשק אחזר‪-‬שורש מקבלת עץ בינארי ומחזירה את‬ ‫‪‬‬
‫תוכן שורשו‪.‬‬
‫פעולת הממשק עדכן‪-‬שורש מקבלת עץ ואיבר‪ ,‬ומשנה את‬ ‫‪‬‬
‫התוכן של השורש להיות האיבר הנתון‪.‬‬
‫שתי פעולות הממשק הללו לא תהיינה מוגדרות על עץ ריק‪.‬‬ ‫‪‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי‬
‫‪19‬‬

‫‪ ‬נניח שנתון העץ הבינארי ‪ T1‬הבא‪:‬‬


‫‪ ‬איזה עץ בינארי נקבל בעקבות ההוראה‪:‬‬
‫תת‪-‬עץ‪-‬ימני (‪)T1‬‬
‫תת‪-‬עץ‪-‬שמאלי (‪)T1‬‬
‫‪T1‬‬ ‫‪ ‬נניח שהעץ הבינארי ששורשו‬
‫מכיל את הערך ‪ D‬נקרא ‪.T2‬‬
‫‪ ‬איזה עץ בינארי נקבל בעקבות ההוראה‪:‬‬
‫‪T2‬‬ ‫תת‪-‬עץ‪-‬ימני (‪)T2‬‬
‫תת‪-‬עץ‪-‬שמאלי (‪)T2‬‬
‫‪ ‬איזה ערך נקבל בעקבות ביצוע ההוראה‪:‬‬
‫אחזר‪-‬שורש (‪)T1‬‬
‫‪ ‬איך ישתנה העץ בעקבות ביצוע ההוראה‪:‬‬
‫עדכן‪-‬שורש (‪)T1,Q‬‬
‫עדכן‪-‬שורש (אחזר‪-‬שורש (‪)T1 ,)T2‬‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
‫עץ בינארי‬
‫‪20‬‬

‫‪ ‬נגדיר פעולות ממשק הבודקות ומשנות את מבנהו של העץ‪.‬‬


‫‪ ‬נגדיר פעולת ממשק בשם עץ‪-‬ריק? הבודקת האם עץ בינארי נתון‬
‫הוא ריק‪.‬‬
‫‪ ‬כמו כן‪ ,‬נגדיר שתי פעולות ממשק המחליפות תת‪-‬עץ של צומת‬
‫בעץ אחר‪:‬‬
‫פעולת הממשק החלף‪-‬תת‪-‬עץ‪-‬שמאלי תקבל עץ בינארי ‪ T‬ועץ בינארי‬ ‫‪‬‬
‫‪ ,new_tree‬ותחליף את התת‪-‬עץ השמאלי של ‪ T‬ב‪.new_tree-‬‬
‫פעולת הממשק החלף‪-‬תת‪-‬עץ‪-‬ימני מוגדרת בהתאמה‪.‬‬ ‫‪‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי‬
‫‪21‬‬

‫נשים לב כי לאחר ההחלפה "יאבד" התת‪-‬עץ המקורי‪ ,‬שכן אין דרך‬ ‫‪‬‬
‫לגשת אליו מתוך ‪ .T‬לכן בדרך כלל נבצע החלפה כזו רק כאשר התת‪-‬עץ‬
‫המקורי הוא ריק‪.‬‬
‫נניח שנתון העץ הבינארי ‪ T1‬כמקודם‪ ,‬כאשר קראנו בשם ‪ T2‬לתת‪-‬העץ‬ ‫‪‬‬
‫ששורשו הוא ‪.D‬‬
‫נניח גם שנתון העץ הבינארי ‪ ,T3‬המורכב מעלה המכיל את הערך '‪.'H‬‬ ‫‪‬‬
‫‪T1‬‬ ‫מה יקרה בעקבות ההוראות‪:‬‬
‫‪‬‬
‫החלף‪-‬תת‪-‬עץ‪-‬שמאלי (‪)T2,T3‬‬
‫‪T2‬‬ ‫החלף‪-‬תת‪-‬עץ‪-‬ימני (‪)T2,T3‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי‬
‫‪22‬‬

‫הממשק של טנ"מ 'עץ בינארי'‪:‬‬


‫פעולה המחזירה עץ בינארי ריק‬ ‫אתחל‪-‬עץ‬
‫פעולה המחזירה עץ בינארי שבשורשו האיבר ‪ ,x‬התת‪-‬עץ השמאלי‬ ‫בנה‪-‬עץ )‪(L,R,x‬‬
‫שלו ‪ ,L‬והתת‪-‬עץ הימני שלו ‪.R‬‬
‫הנחות‪ :‬העצים ‪ L‬ו‪ R-‬מאותחלים‪.‬‬
‫פעולה המחזירה את התת‪-‬עץ השמאלי של ‪.T‬‬ ‫תת‪-‬עץ‪-‬שמאלי )‪(T‬‬
‫הנחות‪ T :‬מאותחל ואינו ריק‪.‬‬
‫פעולה המחזירה את התת‪-‬עץ הימני של ‪.T‬‬ ‫תת‪-‬עץ‪-‬ימני )‪(T‬‬
‫הנחות‪ T :‬מאותחל ואינו ריק‪.‬‬
‫החלף‪-‬תת‪-‬עץ‪-‬שמאלי פעולה המחליפה את התת‪-‬עץ השמאלי של ‪ T‬בעץ הבינארי‬
‫‪.new_tree‬‬ ‫)‪(T,new_tree‬‬
‫הנחות‪ :‬העצים ‪ T‬ו‪ new_tree -‬מאותחלים‪ T ,‬איננו ריק‪.‬‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
‫עץ בינארי‬
‫‪23‬‬

‫הממשק של טנ"מ 'עץ בינארי'‪:‬‬


‫פעולה המחליפה את התת‪-‬עץ הימני של ‪ T‬בעץ הבינארי‬ ‫החלף‪-‬תת‪-‬עץ‪-‬ימני‬
‫‪.new_tree‬‬ ‫)‪(T,new_tree‬‬
‫הנחות‪ :‬העצים ‪ T‬ו‪ new_tree -‬מאותחלים‪ T ,‬איננו ריק‪.‬‬
‫פעולה המחזירה את האיבר שבשורשו של ‪ .T‬הנחות‪T :‬‬ ‫אחזר‪-‬שורש )‪(T‬‬
‫מאותחל ואיננו ריק‪.‬‬
‫פעולה המשנה את התוכן של שורש ‪ T‬להיות ‪.x‬‬ ‫עדכן‪-‬שורש )‪(T,x‬‬
‫הנחות‪ T :‬מאותחל ואיננו ריק‬
‫פעולה המחזירה 'אמת' אם העץ הבינארי ‪ T‬הוא עץ ריק‪,‬‬ ‫עץ‪-‬ריק?)‪(T‬‬
‫ו'שקר' אחרת‪.‬‬
‫הנחה‪ T :‬מאותחל‪.‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי‬
‫‪24‬‬

‫‪ ‬נכתוב אלגוריתם בשם עלה? המקבל עץ בינארי ‪ ,T‬ומחזיר 'אמת'‬


‫אם ‪ T‬הוא עלה‪ ,‬ו‪'-‬שקר' אם לא‪.‬‬
‫עלה (‪)T‬‬
‫אם עץ‪-‬ריק? (‪ , )T‬אזי‪:‬‬
‫החזר 'שקר'‬
‫אחרת‪:‬‬
‫החזר עץ‪-‬ריק? (תת‪-‬עץ‪-‬ימני (‪ ) )T‬וגם‬
‫עץ‪-‬ריק? (תת‪-‬עץ‪-‬שמאלי (‪) )T‬‬

‫‪ ‬אם נסמן ב‪ n-‬את מס' הצמתים בעץ ‪ ,T‬מהי סיבוכיות זמן הריצה‬
‫של האלגוריתם?‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
‫עץ בינארי‬
‫‪25‬‬

‫‪( ‬תת‪-‬עץ‪-‬ימני (‪ + ) )T‬סוד (תת‪-‬עץ‪-‬שמאלי (‪) )T‬‬


‫‪ ‬הפעילו את האלגוריתם הרקורסיבי 'סוד' על העץ הבינארי הבא‪,‬‬
‫וקבעו מה הוא מבצע‪ .‬תנו לאלגוריתם שם משמעותי במקום 'סוד'‪.‬‬
‫‪ ‬נסמן ב‪ n-‬את מס' הצמתים בעץ הבינארי ‪.T‬‬
‫‪ ‬מהי סיבוכיות האלגוריתם?‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי‬
‫‪26‬‬

‫לפניכם האלגוריתם הבא‪ ,‬המקבל כפרמטר עץ בינארי ‪ ,T‬ומחזיר‬ ‫‪‬‬


‫מס' שלם‪:‬‬
‫סוד (‪)T‬‬
‫אם עץ‪-‬ריק? (‪ , )T‬אזי‪:‬‬
‫החזר ‪0‬‬
‫אחרת‪:‬‬
‫החזר אחזר‪-‬שורש (‪ + )T‬סוד (תת‪-‬עץ‪-‬ימני (‪) )T‬‬
‫‪ +‬סוד (תת‪-‬עץ‪-‬שמאלי (‪) )T‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫עץ בינארי‬
‫‪27‬‬

‫‪ ‬הפעילו את האלגוריתם הרקורסיבי 'סוד' על העץ הבינארי‬


‫הבא‪ ,‬וקבעו מה הוא מבצע‪ .‬תנו לאלגוריתם שם משמעותי‬
‫במקום 'סוד'‪.‬‬
‫‪ ‬נסמן ב‪ n-‬את מס' הצמתים בעץ הבינארי ‪.T‬‬
‫‪ ‬מהי סיבוכיות האלגוריתם?‬
‫‪ ‬האם אפשר היה לנסח תנאי עצירה אחר‪,‬‬
‫העושה שימוש באלגוריתם עלה?‪ ,‬כך‬
‫שהאלגוריתם עדיין יפתור את הבעיה?‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


28

?‫שאלות‬

SCE-Chapter-20-Binary Trees Shayke Bilu PhD


‫סריקת עץ בינארי‬
‫‪29‬‬

‫‪ ‬שימושים רבים בעץ בינארי מצריכים מעבר על איברי העץ‬


‫ללא חזרות‪ .‬בשני האלגוריתמים האחרונים שראינו‪ ,‬למשל‪ ,‬יש‬
‫לבקר בכל צומת בדיוק פעם אחת‪.‬‬
‫‪ ‬על צמתי העץ ניתן לעבור בשלושה סוגי סדרים‪:‬‬
‫סריקה בסדר תחילתי (‪)preorder traversal‬‬ ‫‪‬‬

‫סריקה בסדר תֹוכי (‪)inorder traversal‬‬ ‫‪‬‬

‫סריקה בסדר סופי (‪)postorder traversal‬‬ ‫‪‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬
‫‪30‬‬

‫‪ ‬בשלושת סוגי הסריקות מתבצעות הפעולות הבאות‪ ,‬אך בכל‬


‫סריקה הן מתבצעות בסדר שונה‪:‬‬
‫ביקור בשורש העץ‬ ‫‪‬‬

‫סריקה רקורסיבית של תת‪-‬העץ השמאלי‬ ‫‪‬‬

‫סריקה רקורסיבית של תת‪-‬העץ הימני‬ ‫‪‬‬

‫‪ ‬אם הביקור בשורש מתבצע ראשון‪ ,‬הסריקה נקראת סריקה‬


‫בסדר תחילי‪ .‬אם הביקור בשורש מתבצע בשלב השני (בין שני‬
‫הזימונים הרקורסיביים) אז זו סריקה בסדר תוכי‪ ,‬ואם הביקור‬
‫בשורש מתבצע אחרון אז זו סריקה בסדר סופי‪.‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬
‫‪31‬‬

‫‪ ‬כאמור‪ ,‬סריקת עץ מורכבת משלושת הצעדים האלה‪:‬‬


‫ביקור בשורש העץ‬ ‫‪‬‬

‫סריקה רקורסיבית של תת‪-‬העץ השמאלי‬ ‫‪‬‬

‫סריקה רקורסיבית של תת‪-‬העץ הימני‬ ‫‪‬‬

‫‪" ‬ביקור בשורש העץ" פירושו לבצע פעולה כלשהי על הצומת‪.‬‬


‫לדוגמא‪ :‬להוסיף את הערך שבצומת לצובר‪ ,‬או להציג אותו‬
‫כפלט‪ ,‬להגדיל מונה ב‪ ,1-‬וכו'‪.‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬
‫‪32‬‬

‫‪ ‬בכל שלוש הסריקות‪ ,‬כאשר תת‪-‬העץ אינו קיים‪ ,‬לא ממשיכים‬


‫לרדת בכיוון זה של העץ‪.‬‬
‫‪ ‬מבחינת סיבוכיות זמן הריצה‪ ,‬בכל סריקה מבקרים בכל צומת‬
‫פעם אחת‪ ,‬ומבצעים עליו כמות קבועה של פעולות‪ .‬לכן‪ ,‬אם‬
‫נסמן ב‪ n-‬את מס' הצמתים בעץ הבינארי‪ ,‬ביצוע סריקה זו‬
‫פעולה שהסיבוכיות שלהה )‪.Θ(n‬‬
‫‪ ‬נדגים כיצד פועל האלגוריתם הרקורסיבי לסריקה בסדר‬
‫תחילתי (‪.)preorder traversal‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫סרוק‪-‬בסדר‪-‬תחילי‬


‫)‪(T‬‬
‫אם לא עץ‪-‬ריק? )‪(T‬‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪ (1.1‬בקר בשורש)‪(T‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪G‬‬ ‫‪H‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪33‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫סרוק‪-‬בסדר‪-‬תחילי‬


‫)‪(T‬‬
‫אם לא עץ‪-‬ריק? )‪(T‬‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪ (1.1‬בקר בשורש)‪(T‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪G‬‬ ‫‪H‬‬

‫‪A‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪34‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫סרוק‪-‬בסדר‪-‬תחילי‬


‫)‪(T‬‬
‫אם לא עץ‪-‬ריק? )‪(T‬‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪ (1.1‬בקר בשורש)‪(T‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪G‬‬ ‫‪H‬‬

‫‪A‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪35‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש)‪(T‬‬ ‫)‪(1.2‬לא עץ‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫בקר‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪G‬‬ ‫‪H‬‬

‫‪A‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪36‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש)‪(T‬‬ ‫)‪(1.2‬לא עץ‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫בקר‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪G‬‬ ‫‪H‬‬

‫‪A,B‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪37‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש)‪(T‬‬ ‫)‪(1.2‬לא עץ‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫בקר‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪G‬‬ ‫‪H‬‬

‫‪A,B‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪38‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫אם לא עץ‬ ‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫)‪ (1.2‬סרוק‪-‬בסדר‬‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪39‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫אם לא עץ‬ ‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫)‪ (1.2‬סרוק‪-‬בסדר‬‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪40‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫אם לא עץ‬ ‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫)‪ (1.2‬סרוק‪-‬בסדר‬‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪41‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫תחילי‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫ריק?‬‫בסדר‪-‬‬
‫לא‪ -‬עץ‪-‬‬ ‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫‪4‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‬ ‫בקר‬
‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬‬ ‫)‪(1.1‬‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש‬ ‫)‪(1.2‬לא עץ‬‫אם‬
‫)‪(1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬ ‫‪-‬‬ ‫עץ‬ ‫‪-‬‬
‫תת‪-‬עץ‪-‬ימני‬ ‫תת‬
‫)‬ ‫תחילי‬ ‫‪-‬‬ ‫בסדר‬ ‫‪-‬‬ ‫סרוק‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬ ‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪42‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫תחילי‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫ריק?‬‫בסדר‪-‬‬
‫לא‪ -‬עץ‪-‬‬ ‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫‪4‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‬ ‫בקר‬
‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬‬ ‫)‪(1.1‬‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש‬ ‫)‪(1.2‬לא עץ‬‫אם‬
‫)‪(1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬ ‫‪-‬‬ ‫עץ‬ ‫‪-‬‬
‫תת‪-‬עץ‪-‬ימני‬ ‫תת‬
‫)‬ ‫תחילי‬ ‫‪-‬‬ ‫בסדר‬ ‫‪-‬‬ ‫סרוק‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬ ‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪43‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫אם לא עץ‬ ‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫)‪ (1.2‬סרוק‪-‬בסדר‬‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪44‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫תחילי‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫ריק?‬‫בסדר‪-‬‬
‫לא‪ -‬עץ‪-‬‬ ‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫‪4‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‬ ‫בקר‬
‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬‬ ‫)‪(1.1‬‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש‬ ‫)‪(1.2‬לא עץ‬‫אם‬
‫)‪(1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬ ‫‪-‬‬ ‫עץ‬ ‫‪-‬‬
‫תת‪-‬עץ‪-‬ימני‬ ‫תת‬
‫)‬ ‫תחילי‬ ‫‪-‬‬ ‫בסדר‬ ‫‪-‬‬ ‫סרוק‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬ ‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪45‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫תחילי‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫ריק?‬‫בסדר‪-‬‬
‫לא‪ -‬עץ‪-‬‬ ‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫‪4‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‬ ‫בקר‬
‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬‬ ‫)‪(1.1‬‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש‬ ‫)‪(1.2‬לא עץ‬‫אם‬
‫)‪(1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬ ‫‪-‬‬ ‫עץ‬ ‫‪-‬‬
‫תת‪-‬עץ‪-‬ימני‬ ‫תת‬
‫)‬ ‫תחילי‬ ‫‪-‬‬ ‫בסדר‬ ‫‪-‬‬ ‫סרוק‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬ ‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪46‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש)‪(T‬‬ ‫)‪(1.2‬לא עץ‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫בקר‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪G‬‬ ‫‪H‬‬

‫‪A,B,D‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪47‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫אם לא עץ‬ ‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫)‪ (1.2‬סרוק‪-‬בסדר‬‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪48‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫אם לא עץ‬ ‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫)‪ (1.2‬סרוק‪-‬בסדר‬‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D,E‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪49‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫אם לא עץ‬ ‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫)‪ (1.2‬סרוק‪-‬בסדר‬‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D,E‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪50‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫תחילי‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫ריק?‬‫בסדר‪-‬‬
‫לא‪ -‬עץ‪-‬‬ ‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫‪4‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‬ ‫בקר‬
‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬‬ ‫)‪(1.1‬‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש‬ ‫)‪(1.2‬לא עץ‬‫אם‬
‫)‪(1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬ ‫‪-‬‬ ‫עץ‬ ‫‪-‬‬
‫תת‪-‬עץ‪-‬ימני‬ ‫תת‬
‫)‬ ‫תחילי‬ ‫‪-‬‬ ‫בסדר‬ ‫‪-‬‬ ‫סרוק‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬ ‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D,E‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪51‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫תחילי‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫ריק?‬‫בסדר‪-‬‬
‫לא‪ -‬עץ‪-‬‬ ‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫‪4‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‬ ‫בקר‬
‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬‬ ‫)‪(1.1‬‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש‬ ‫)‪(1.2‬לא עץ‬‫אם‬
‫)‪(1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬ ‫‪-‬‬ ‫עץ‬ ‫‪-‬‬
‫תת‪-‬עץ‪-‬ימני‬ ‫תת‬
‫)‬ ‫תחילי‬ ‫‪-‬‬ ‫בסדר‬ ‫‪-‬‬ ‫סרוק‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬ ‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D,E,G‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪52‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫סרוק‪-‬בסדר‪-‬תחילי‬


‫)‪(T‬‬
‫אם לא עץ‪-‬ריק? )‪(T‬‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪ (1.1‬בקר בשורש)‪(T‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪G‬‬ ‫‪H‬‬

‫‪A,B,D,E,G‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪53‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש)‪(T‬‬ ‫)‪(1.2‬לא עץ‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫בקר‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪G‬‬ ‫‪H‬‬

‫‪A,B,D,E,G‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪54‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש)‪(T‬‬ ‫)‪(1.2‬לא עץ‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫בקר‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪G‬‬ ‫‪H‬‬

‫‪A,B,D,E,G,C‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪55‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש)‪(T‬‬ ‫)‪(1.2‬לא עץ‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫בקר‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬
‫‪G‬‬ ‫‪H‬‬

‫‪A,B,D,E,G,C‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪56‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫אם לא עץ‬ ‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫)‪ (1.2‬סרוק‪-‬בסדר‬‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D,E,G,C‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪57‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫אם לא עץ‬ ‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫)‪ (1.2‬סרוק‪-‬בסדר‬‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D,E,G,C,F‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪58‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫)‪(T‬‬
‫)‪(T‬‬ ‫תחילי‬ ‫בסדר‪-‬‬
‫ריק?‬ ‫לא‪ -‬עץ‪-‬‬‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫אם לא עץ‬ ‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‪-‬‬
‫)‪ (1.2‬סרוק‪-‬בסדר‬‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬
‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬
‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬ ‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D,E,G,C,F‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪59‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫תחילי‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫ריק?‬‫בסדר‪-‬‬
‫לא‪ -‬עץ‪-‬‬ ‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫‪4‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‬ ‫בקר‬
‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬‬ ‫)‪(1.1‬‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש‬ ‫)‪(1.2‬לא עץ‬‫אם‬
‫)‪(1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬ ‫‪-‬‬ ‫עץ‬ ‫‪-‬‬
‫תת‪-‬עץ‪-‬ימני‬ ‫תת‬
‫)‬ ‫תחילי‬ ‫‪-‬‬ ‫בסדר‬ ‫‪-‬‬ ‫סרוק‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬ ‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D,E,G,C,F‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪60‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

‫‪A‬‬ ‫‪1‬‬ ‫)‪(T‬‬‫סרוק‪-‬בסדר‪-‬תחילי‬


‫‪2‬‬ ‫תחילי‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫ריק?‬‫בסדר‪-‬‬
‫לא‪ -‬עץ‪-‬‬ ‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫‪B‬‬ ‫‪C‬‬ ‫‪3‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫)‪(T‬‬ ‫בשורש‬ ‫בקר‬ ‫)‪(1.2‬‬
‫‪4‬‬ ‫)‪(T‬‬‫תחילי‬
‫)‪(T‬‬ ‫?‬ ‫בסדר‪-‬‬
‫ריק‬ ‫‪-‬‬ ‫עץ‬ ‫לא‪-‬‬
‫סרוק‬
‫אם‬
‫)‪(1‬‬
‫תת‪-‬עץ‪-‬שמאלי)‪((T‬‬ ‫תחילי)‬‫)‪(T‬‬‫בשורש‬ ‫בקר‬
‫)‪ (1.2‬סרוק‪-‬בסדר‪-‬‬ ‫)‪(1.1‬‬
‫)‪(T‬‬
‫)‪(T‬‬ ‫בקר‪-‬ריק?‬
‫בשורש‬ ‫)‪(1.2‬לא עץ‬‫אם‬
‫)‪(1‬‬
‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫שמאלי‬
‫)‪((T)((T‬‬ ‫‪-‬‬ ‫עץ‬ ‫‪-‬‬
‫תת‪-‬עץ‪-‬ימני‬ ‫תת‬
‫)‬ ‫תחילי‬ ‫‪-‬‬ ‫בסדר‬ ‫‪-‬‬ ‫סרוק‬
‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬ ‫)‪(1.1‬‬
‫שמאלי‬ ‫בקר‪-‬בשורש)‪(T‬‬ ‫)‪(1.1‬‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪-‬בסדר‬
‫)‪ (1.1‬סרוק‬‫)‪(1.3‬‬
‫שמאלי‬
‫)‪((T)((T‬‬ ‫עץ‪-‬ימני‬
‫תת‪-‬עץ‪-‬‬ ‫תחילי)‬
‫תת)‪-‬‬ ‫בסדר‪--‬תחילי‬
‫סרוק‪--‬בסדר‬
‫)‪ (1.2‬סרוק‬‫)‪(1.3‬‬
‫‪G‬‬ ‫‪H‬‬
‫תת‪-‬עץ‪-‬ימני)‪((T‬‬ ‫)‪ (1.3‬סרוק‪-‬בסדר‪-‬תחילי)‬

‫‪A,B,D,E,G,C,F,H‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪61‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬

B C

D E F

G H

A,B,D,E,G,C,F,H

SCE-Chapter-20-Binary Trees 62 Shayke Bilu PhD


63

?‫שאלות‬

SCE-Chapter-20-Binary Trees Shayke Bilu PhD


‫סריקת עץ בינארי‬
‫‪64‬‬

‫אנחנו רואים שבעקבות ביצוע סריקה בסדר תחילי על העץ‬ ‫‪‬‬


‫הבינארי הבא‪ ,‬התקבלה סדרת הערכים ‪.A,B,D,E,G,C,F,H‬‬
‫הערך הראשון שהתקבל בסדרת הערכים (‪ )A‬זהה לערך המאוחסן‬ ‫‪‬‬
‫בשורש העץ הבינארי‪.‬‬
‫האם תמיד זה כך בעת שעושים סריקה בסדר תחילי?‬ ‫‪‬‬
‫הערך האחרון שהתקבל בסדרת הערכים (‪ )H‬מאוחסן באחד‬ ‫‪‬‬
‫מהעלים בעץ הבינארי‪.‬‬
‫האם תמיד זה כך בעת שעושים סריקה בסדר תחילי?‬ ‫‪‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫סריקת עץ בינארי‬
‫‪65‬‬

‫‪ ‬נתון העץ הבינארי הבא‪.‬‬


‫‪ ‬כתבו את סדרת הערכים המתקבלת מסריקת העץ‪...‬‬
‫בסדר תחילי‬ ‫‪‬‬
‫בסדר תוכי‬ ‫‪‬‬
‫בסדר סופי‪.‬‬ ‫‪‬‬
‫תנו דוגמא לעץ בינארי לא ריק שעבורו‬ ‫‪‬‬
‫שלושת הסריקות יתנו את אותה סדרת‬ ‫‪‬‬
‫ערכים‪.‬‬ ‫‪‬‬
‫תנו דוגמא כנ"ל‪ ,‬אולם הפעם‬ ‫‪‬‬
‫כל איברי העץ צריכים בהכרח‬ ‫‪‬‬
‫להיות שונים זה מזה‪.‬‬ ‫‪‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫רקורסיה ורשימות ‪ -‬דוגמא‬
‫‪66‬‬

‫‪ ‬מציאת איבר מקסימלי בעץ בינארי‪:‬‬


‫‪20‬‬
‫‪34‬‬ ‫‪4‬‬

‫‪56‬‬ ‫‪14‬‬ ‫‪11‬‬ ‫‪-5‬‬

‫‪9‬‬ ‫‪-58‬‬ ‫‪20‬‬ ‫‪21‬‬ ‫‪-21‬‬ ‫‪0‬‬


‫‪23‬‬ ‫‪6‬‬ ‫‪1‬‬ ‫‪2‬‬
‫‪-6‬‬ ‫‪12‬‬
‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬
‫ דוגמא‬- ‫רקורסיה ורשימות‬
67

:‫ מציאת איבר מקסימלי בעץ בינארי‬


typedef struct node
{
int content;
struct node *left;
struct node *right;
} Node;

SCE-Chapter-20-Binary Trees Shayke Bilu PhD


‫רקורסיה ורשימות ‪ -‬דוגמא‬
‫‪68‬‬

‫‪ ‬מציאת איבר מקסימלי בעץ בינארי‪:‬‬


‫‪ ‬הנחות‪:‬‬
‫לכל צומת בעץ יש בדיוק שני בנים או אין בנים כלל‪.‬‬ ‫‪.1‬‬

‫השורש אינו ‪( NULL‬כלומר‪ ,‬קיים לפחות צומת אחד‬ ‫‪.2‬‬


‫בעץ)‪.‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


‫ דוגמא‬- ‫רקורסיה ורשימות‬
69

int findmax (Node *node)


{
int left, right, maxlr, max;
if (node->left==NULL)
return node->content;
left=findmax(node->left);
right=findmax(node->right);
maxlr= left >right ? left:right;
max= maxlr>node->content ? maxlr:node->content;
return max;
}
SCE-Chapter-20-Binary Trees Shayke Bilu PhD
‫תרגילים‬
‫‪70‬‬

‫כתבו אלגוריתם המקבל עץ בינארי המכיל מספרים ממשיים‪,‬‬ ‫‪‬‬


‫ומקטין את ערכו של כל איבר בעץ פי ‪.2‬‬
‫כתבו אלגוריתם המקבל עץ בינארי המכיל מס' שלמים‪ ,‬ומחזיר‬ ‫‪‬‬
‫את מס' הצמתים שבהם מופיעים ערכים זוגיים‪.‬‬
‫כתבו אלגוריתם המקבל עץ בינארי‪ ,‬ומציג כפלט את כל הערכים‬ ‫‪‬‬
‫המופיעים בעלים‪.‬‬
‫כתבו אלגוריתם המקבל עץ בינארי‪ ,‬ומחזיר‬ ‫‪‬‬
‫את סכום ערכי הצמתים שיש להם שני בנים‪.‬‬

‫‪SCE-Chapter-20-Binary Trees‬‬ ‫‪Shayke Bilu PhD‬‬


71

?‫שאלות‬

SCE-Chapter-20-Binary Trees Shayke Bilu PhD

You might also like