סיכום קצר על עצים אדומים-שחורים
Transcript of סיכום קצר על עצים אדומים-שחורים
אדומים־שחורים א'עצים סמסטר ־ נתונים מבני
שחורים אדומים עצים
הגדרה 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
אדומים־שחורים א'עצים סמסטר ־ נתונים מבני
לעץ קודקוד הוספת 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