סריקה תחילית, סריקה תוכית וסריקה סופית

שלום לכולם,
התחלתי ללמוד על סריקות של עץ בינארי. למדו שיש שלוש סוגי סריקות מקובלות:

  1. סריקה תחילית.
  2. סריקה תוכית.
  3. סריקה סופית.

אשמח בבקשה להסבר מה ההבדל ביניהם.

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

נתבונן על העץ הבא שמכיל שלוש צמתים:

image

אנחנו מתחילים תמיד משורש העץ. במקרה שלנו השורש הוא הצומת שמכיל את הערך 9. בהנחה שבכל פעם כשאנחנו קוראים את הצומת הערך שלו מוצג כפלט נקבל עבור העץ את הקלטים
הבאים משמאל לימין:

  • בסריקה תחילית נקבל: 9,4,2.
  • בסריקה תוכית נקבל: 4,9.2.
  • בסריקה סופית נקבל: 4,2,9.

סריקה תחילית באנגלית נקראת Preorder, סריקה תוכית באנגלית נקראת Inorder וסריקה סופית באנגלית נקראת Postorder.
מקווה שמובן, בהצלחה.