1 / 18

עץ אדום -שחור

עץ אדום -שחור. (CLR chapter 14). עץ חיפוש בינארי. בכל צומת ביט אינפורמציה נוסף - צבע. צביעה מבטיחה שאין מסלול ארוך פי שניים מאחר. עץ “כמעט מאוזן” ( O(log n במקרה גרוע ביותר. מבנה – כל צומת מכיל:. parent left right color key. תכונות.

mircea
Télécharger la présentation

עץ אדום -שחור

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. עץ אדום-שחור (CLR chapter 14) • עץ חיפוש בינארי • בכל צומת ביט אינפורמציה נוסף - צבע • צביעה מבטיחה שאין מסלול ארוך פי שניים מאחר • עץ “כמעט מאוזן” • (O(log nבמקרה גרוע ביותר • מבנה – כל צומת מכיל: • parent • left • right • color • key Data Structures, CS, TAU, RB-Tree

  2. תכונות גובה שחור:מס’ הצמתים השחורים מצומת לעלה (לא כולל הצומת). BH(T) סימון: 1. כל צומת אדום או שחור 2. כל עלה (NIL) הוא שחור 3. אם צומת אדום שני ילדיו שחורים 4. כל מסלול פשוט מצומת לעלה מכיל מספר זהה של צמתים שחורים Data Structures, CS, TAU, RB-Tree

  3. דוגמא לעץ אדום-שחור 14 7 2 10 16 7 1 7 7 12 7 15 1 1 1 NIL 3 NIL NIL NIL NIL NIL 1 NIL NIL * מס’ ליד צומת הוא גובה שחור של אותו צומת Lemma 14.1 (CLR): A red-black tree with ninternal nodeshas height at most 2lg(n+1) Data Structures, CS, TAU, RB-Tree

  4. הוכחת הלמה הוכחה: אינדוקציה (מוכח מלא בספר) • אינטואיציה: • רוב הצמתים שחורים • גובה שחור - אחיד: • מבחינת שחורים עץ מאוזן log • אדומים - רק תוספת (לכל היותר מכפילים כל מסלול) Data Structures, CS, TAU, RB-Tree

  5. רוטציות של עץ בינארי Right_Rotate(T,y) Y X X Y   גדול קטן     קטן אמצע אמצע גדול Left_Rotate(T,x) • עומק של  עולה/יורד ב- 1 • עומק של  אינו משתנה Data Structures, CS, TAU, RB-Tree

  6. השפעת רוטציה על עומק העץ x 7 7 y 11 11 9 9 18 17 22 19 14 18 19 22 20 20 12 17 12 14 Left_Rotate(T,x) y x Inorder doesn’t change! Data Structures, CS, TAU, RB-Tree

  7. ביצוע Insert 1. הכנסת Xבמקום המתאים (כמו בעץ בינארי) ובצבע אדום 2. ביצוע תיקונים מלמטה למעלה - אם יש שני אדומים רציפים Data Structures, CS, TAU, RB-Tree

  8. תיקון צבעים ב-Insert • בתיקון: א) הצפת אדום האב כלפי מעלה (העברת הבעיה כלפי מעלה) או: ב) השכנת הבעיה במסגרת משפ’ הסבא ע”י התקזזות עם הדוד (עצירת הבעיה)  אם צומת אדום ואביו אדום  האח שחור • תיקון אם צומת אדום וגם אביו אדום Data Structures, CS, TAU, RB-Tree

  9. דוד אדום – Case I new x y A B C D D C   x         D B B A A A C B D C new x y           החלף צבעים בין סבא לבניו x Data Structures, CS, TAU, RB-Tree

  10. דוד שחור – Case II Left_Rotate(A), Right_Rotate(B) + החלף צבעיםBC Case II B C y y C y y y x   x B A A A B C     Case III x    • כל התכונות נשמרות • בעיה עלתה למעלה (רק Case I) Data Structures, CS, TAU, RB-Tree

  11. דוגמא ל-Insert :Node X was now inserted 11 14 5 8 1 14 1 7 11 y Case I 4 8 5 2 15 2 15 7 4 x y x Case II Data Structures, CS, TAU, RB-Tree

  12. דוגמא ל-Insert (המשך) y 11 5 14 14 8 8 5 1 1 7 x Case III 2 2 15 4 4 7 15 11 x Data Structures, CS, TAU, RB-Tree

  13. ביצוע Delete Y - מושמט X - בנו Y X 3) אם Yהיה שחור בצע RB_DELETE_FIXUP(X) 3א) אם Xאדום צבע בשחור וסיים 1) מבצעים deleteכמו בעץ חיפוש בינארי רגיל 2) אם Yהיה אדום  כל תכונות RB נשמרו. עצור. Data Structures, CS, TAU, RB-Tree

  14. דוגמה Delete Fixup ל- Xיש אח כי Xהוא שחור (כפול)! יהי Wאח של X X - שחור X - מקום שמעליו בוצעה השמטה - נחשוב על Xכעל מכילשחור + שחור חסר  כל מסלול בעץ הוא חוקי מטרה: להיפטר מהשחור המיותר Data Structures, CS, TAU, RB-Tree

  15. דוגמה Delete Fixup - מקרים Wאדום Wשחור + 2 בנים שחורים Case 1 Case 2 החלף צבעי P(X), Wו- Left_Rotate(P(X))  מוליך ל-Case 1,2,3,4  כל המסלולים לתתי עצים באותו גובה שחור הורד שחור מ- Wו- Xוהוסף ל- P(X) Xשחור בודד Wאדום P(xשחור או אדום (נהפך לשחור או לדו-שחור) Data Structures, CS, TAU, RB-Tree

  16. דוגמה Delete Fixup Case 1 x w A D C E B E A C             D B new w x c c, new x/black B Case 2 B x w D A A D   C E   C E         Data Structures, CS, TAU, RB-Tree

  17. דוגמה Delete Fixup - מקרים Wשחור + בן שמאלי אדום + בן ימני שחור Case 3 החלף צבעים בין Wובנו השמאלי ובצע Right_Rotate מטפל בבעיה וגורם ללולאה להסתיים Case 4 Wשחור + בן ימני אדום שנה צבעים ו- Left_Rotate(P(X)) מצב 4 Data Structures, CS, TAU, RB-Tree

  18. דוגמה Delete Fixup c c Case 3 x new w w x E D A D B E A A E C A             D C C B D E C B B c c Case 4 x w             ‘c Data Structures, CS, TAU, RB-Tree

More Related