סיכום קצר על עצים אדומים-שחורים

2
עצים אדומים־שחורים מבני נתונים ־ סמסטר א' שחורים אדומים עצים הגדרה1 לכל אשר בינארי חיפוש עץ הינו אדום־שחור עץ או באדום קודקוד ישנה תוכנה נוספת ־ הוא צבוע. 1 שחור כלומר, לכל קודקוד ישנן ארבעה תכונות:.(מלבד השורש כמובן) הורה בן שמאלי. בן ימני..(אדום או שחור) צבע תכונות העץ1.1 לעץ בינארי אדום־שחור קיימות מספר תכונות: השורש הוא תמיד שחור.כלומר, לא) אין שני קודקודים אדומים ברצף.( ייתכנו אב ובן אדומים ־ים ב־ העץ תחתית את "מרפדים" אנחנו. למשל:(שכאן יסומנו כ־) 6 2 של כלקודקוד מוגדר היטב, כלומר, הגובה השחור אם ניקח קודקוד מסויים בעץ, אזי כמות העליםלא כולל אותו במידה והוא) השחורים שנראה בכל מסילה פשוטה למטה לאחד העלים( שחור תהיה זהה. וצמתים3 במהלך הסיכום הזה צמתים אדומים יסומנו ־1 3 שחורים יסומנו ־ בניית עץ אדום־שחור2 ע"י חוקי אדום־שחור עץ לבנות ניתן בעיקרון, קודקודים מוסיפיםאיך) קודקוד־קודקוד הוספת, אבל ישנן עוד כמה שיטות...( יוסבר בהמשך אציג כאן שתי שיטות מאוד דומות:עד כמה) 2 מאוזן האחת ־ בונים עץ חיפוש בינארי ופשוט צובעים את כל העץ בשחור מלבד הרמה( שניתן, למשל:(זאת ש"פוגעת" באיזון העץ) שאינה מואזנת5 2 6 1 3 7 8 4 זה עץ אדום־שחור חוקי:.X השורש שחור.X אין שני אדומים ברצף כל קודקוד שנבחר בעץ, הגובה השחור שלו זהה לאחד העלים(כלפי מטה) לכל בכל מסילה פשוטה.X בשחור אחת רמה נצבע שפשוט היא נוספת דרך ואז רמה הבאה באדום וכך הלאה...(השורש) מבחינת הגובה ישנם מקרים שבהם זה לא יעבוד,זה קורה כאשר הרמה שאינה) השחור של העלים מאוזנת, כלומר, זאת שמפרה את איזון העץ צבועה, לכן תמיד כדאי לבדוק( בשחור ומה שמעליה באדום את הגובה השחור של הקודקודים.5 2 6 1 3 7 8 4 , בהנחה כי הערה: מכאן ואליך לא יוצגו בעצים ה־ הרעיון הובן. עץ קיים כדי לבדוק אם לצבוע כאשר אנחנו נדרשים ניתן לצוע אותו כך שיהיה אדום שחור, כדאי לשים לבהיכן שיש תתי עץ שאינם) למקומות הלא מאוזנים בעץ.( מאוזנים ולאות אם הדבר אפשרי שמה כלומר, שכל תתי העצים של כל קודקוד בם באותו עומק.2 1

Transcript of סיכום קצר על עצים אדומים-שחורים

Page 1: סיכום קצר על עצים אדומים-שחורים

אדומים־שחורים א'עצים סמסטר ־ נתונים מבני

שחורים אדומים עצים

הגדרה 1

לכל אשר בינארי חיפוש עץ הינו אדום־שחור עץאו באדום צבוע הוא ־ נוספת תוכנה ישנה קודקוד

שחור1.תכונות: ארבעה ישנן קודקוד לכל כלומר,

כמובן). השורש (מלבד הורה l

שמאלי. בן l

ימני. בן l

שחור). או (אדום צבע l

העץ תכונות 1.1

תכונות: מספר קיימות אדום־שחור בינארי לעץ

שחור. תמיד הוא השורש l

לא (כלומר, ברצף אדומים קודקודים שני אין lאדומים). ובן אב ייתכנו

ב־NIL־ים העץ תחתית את "מרפדים" אנחנו lלמשל: כ־�). יסומנו (שכאן

6

2 �� �

כלומר, היטב, מוגדר כלקודקוד של השחור הגובה lהעלים כמות אזי בעץ, מסויים קודקוד ניקח אםוהוא במידה אותו כולל (לא שנראה השחוריםהעלים לאחד למטה פשוטה מסילה בכל שחור)

זהה. תהיה

וצמתים 3 ־ יסומנו אדומים צמתים הזה הסיכום 1במהלך

3 ־ יסומנו שחורים

אדום־שחור עץ בניית 2

ע"י חוקי אדום־שחור עץ לבנות ניתן בעיקרון,קודקודים מוסיפים (איך קודקוד־קודקוד הוספת

שיטות... כמה עוד ישנן אבל בהמשך), יוסברדומות: מאוד שיטות שתי כאן אציג

כמה (עד מאוזן2 בינארי חיפוש עץ בונים ־ האחתהרמה מלבד בשחור העץ כל את צובעים ופשוט שניתן)

למשל: העץ), באיזון ש"פוגעת" (זאת מואזנת שאינה

5

2 6

1 3 7 8

� 4 � �� � � �

� �

חוקי: אדום־שחור עץ זה

.X שחור השורש l

.X ברצף אדומים שני אין l

זהה שלו השחור הגובה בעץ, שנבחר קודקוד כל lהעלים לאחד מטה) (כלפי פשוטה מסילה בכל לכל

.X

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

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

הקודקודים. של השחור הגובה את

5

2 6

1 3 7 8

� 4 � �� � � �

� �

כי בהנחה ה־�, בעצים יוצגו לא ואליך מכאן הערה:הובן. הרעיון

אם לבדוק כדי קיים עץ לצבוע נדרשים אנחנו כאשרלב לשים כדאי שחור, אדום שיהיה כך אותו לצוע ניתןשאינם עץ תתי שיש (היכן בעץ מאוזנים הלא למקומות

שמה). אפשרי הדבר אם ולאות מאוזנים

עומק. באותו בם קודקוד כל של העצים תתי שכל 2כלומר,

1

Page 2: סיכום קצר על עצים אדומים-שחורים

אדומים־שחורים א'עצים סמסטר ־ נתונים מבני

לעץ קודקוד הוספת 3

תמיד הוא ־ לעץ קודקוד להוסיף רוצים אנחנו כאשראדום. בצבע כעלה יתווסף

באופן (ה־�) ה־NIL־ים שכבת את מסירים אנחנוה־ את מחזירים ואז האדום, העלה את מכניסים זמני,אותו לראות ניתן שלמעלה, כאן בעץ למשל, NIL־ים.

... 4 ־ את עכשיו לנו הוספנו כאילומקרים: לשלושה ההוספה את נחלק

שחור לקודקוד עלה הוספת 3.1

כי: בעיה! שום לנו אין כזה במקרה

הוספנו (הרי אדומים שני של רצף יוצר לא זה lשחור). לקודקוד מתחת אותו

(והאבות ההורים של האדום בגובה פוגע לא זה lקודקודים סופרים לו אנחנו כי עליונים) היותר

שחור. בגובה שחורים

אדום לקודקוד עלה הוספת 3.2

אדומים... שני של רצף יש ־ בעיה לנו יש הזה במקרהעושים? מה אז

לימין רוטציה ־ מושגים שני שנכיר כדאי זה לפנילשמאל ורוטציה

לשמאל רוטציה 3.2.1

ימינה אחד קודקוד מוסבבים אנחנו כאן בעיקרוןוניתן), (במידה

למשל:

3

γ 4

β α

⇒ 4

3 α

γ β

ש: לכך לב לשים כדאי

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

השנייה!

זה... את לזכור חשובתתי־עצים. או קודקודים להיות יכולים אלו ־ α, β, γ

לימין רוטציה 3.2.2

הפוך: רק הדבר אותו בדיוק

4

3 α

γ β

⇒ 3

γ 4

β α

2