Download presentation
Presentation is loading. Please wait.
1
1 Data Structures, CS, TAU, RB-Tree1 עץ אדום-שחור עץ חיפוש בינארי בכל צומת ביט אינפורמציה נוסף - צבע עץ “כמעט מאוזן” (O(log n במקרה גרוע ביותר צביעה מבטיחה שאין מסלול ארוך פי שניים מאחר מבנה – כל צומת מכיל: parent left right color key (CLR chapter 14)
2
2 Data Structures, CS, TAU, RB-Tree2 1. כל צומת אדום או שחור 2. כל עלה (NIL) הוא שחור 3. אם צומת אדום שני ילדיו שחורים 4. כל מסלול פשוט מצומת לעלה מכיל מספר זהה של צמתים שחורים גובה שחור: מס’ הצמתים השחורים מצומת לעלה (לא כולל הצומת). סימון: BH(T) תכונות (צבעים: מנגנון חשבונאות)
3
3 Data Structures, CS, TAU, RB-Tree3 * מס’ ליד צומת הוא גובה שחור של אותו צומת NIL 3 77 10 NIL 71215 NIL 716 NIL 714 2 11 1 1 1 Lemma 14.1 (CLR): A red-black tree with n internal nodes has height at most 2lg(n+1) דוגמא לעץ אדום-שחור
4
4 Data Structures, CS, TAU, RB-Tree4 אינטואיציה: רוב הצמתים שחורים גובה שחור - אחיד: מבחינת שחורים עץ מאוזן log אדומים - רק תוספת (לכל היותר מכפילים כל מסלול) הוכחה: אינדוקציה (מוכח מלא בספר) הוכחת הלמה
5
5 Data Structures, CS, TAU, RB-Tree5 קטן X Y Y X Right_Rotate(T,y) Left_Rotate(T,x) גדול קטן אמצע עומק של עולה/יורד ב- 1 עומק של אינו משתנה שמירת איזונים: רוטציות של עץ בינארי
6
6 Data Structures, CS, TAU, RB-Tree6 7 11 918 1419 22 20 1217 x y 7 11 9 18 14 19 22 201217 x y Left_Rotate(T,x) Inorder doesn’t change! השפעת רוטציה על עומק העץ
7
7 Data Structures, CS, TAU, RB-Tree7 1. הכנסת X במקום המתאים (כמו בעץ בינארי) ובצבע אדום 2. ביצוע תיקונים מלמטה למעלה - אם יש שני אדומים רציפים ביצוע Insert
8
8 Data Structures, CS, TAU, RB-Tree8 תיקון צבעים ב-Insert תיקון אם צומת אדום וגם אביו אדום בתיקון: א) הצפת אדום האב כלפי מעלה (העברת הבעיה כלפי מעלה) ב) השכנת הבעיה במסגרת משפ’ הסבא ע”י התקזזות עם הדוד (עצירת הבעיה) או: אם צומת אדום ואביו אדום האח שחור
9
9 Data Structures, CS, TAU, RB-Tree9 דוד אדום – Case I החלף צבעים בין סבא לבניו x C B DA C x y D B A new x C A DB y A B C D
10
10 Data Structures, CS, TAU, RB-Tree10 דוד שחור – Case II Left_Rotate(A), Right_Rotate(B) + החלף צבעים B C y Case II C B A y C A B x y y x A B C Case III x y כל התכונות נשמרות בעיה עלתה למעלה (רק Case I)
11
11 Data Structures, CS, TAU, RB-Tree11 דוגמא ל-Insert 11 214 15 1 4 x y Case II 7 8 5 11 214 15 17 4 58 x y Case I :Node X was now inserted
12
12 Data Structures, CS, TAU, RB-Tree12 דוגמא ל-Insert (המשך) Case III x 11 2 14 15 1 4 y 7 8 5 x 2 14 15 1 4 8 5 7 11
13
13 Data Structures, CS, TAU, RB-Tree13 ביצוע Delete 1) מבצעים delete כמו בעץ חיפוש בינארי רגיל Y X Y - מושמט X - בנו 2) אם Y היה אדום כל תכונות RB נשמרו. עצור. 3) אם Y היה שחור בצע RB_DELETE_FIXUP(X) 3א) אם X אדום צבע בשחור וסיים
14
14 Data Structures, CS, TAU, RB-Tree14 דוגמה Delete Fixup X - שחור X - מקום שמעליו בוצעה השמטה - נחשוב על X כעל מכיל שחור + שחור חסר (שחור כהה = חסר צמת!!!) כל מסלול בעץ הוא חוקי מטרה: להיפטר מהשחור המיותר (= להוסיף שם צמת) יהי W אח של X ל- X יש אח כי X הוא שחור (כפול)!
15
15 Data Structures, CS, TAU, RB-Tree15 דוגמה Delete Fixup - מקרים הורד שחור מ- W ו- X והוסף ל- P(X) X שחור בודד W אדום P(x שחור או אדום (נהפך לשחור או לדו-שחור) החלף צבעי P(X), W ו- Left_Rotate(P(X)) מוליך ל-Case 1,2,3,4 כל המסלולים לתתי עצים באותו גובה שחור Case 1 W אדום Case 2 W שחור + 2 בנים שחורים
16
16 Data Structures, CS, TAU, RB-Tree16 דוגמה Delete Fixup B B AD E C E C D A Case 1 x w new w x החלף צבעי P(X), W ו- Left_Rotate(P(X)) מוליך ל-Case 1,2,3,4 כל המסלולים לתתי עצים באותו גובה שחור Case 1 W אדום
17
17 Data Structures, CS, TAU, RB-Tree17 דוגמה Delete Fixup A E Case 2 B D C AD E C B x w c c, new x/black הורד שחור מ- W ו- X והוסף ל- P(X) X שחור בודד W אדום P(x שחור או אדום (נהפך לשחור או לדו-שחור) Case 2 W שחור + 2 בנים שחורים
18
18 Data Structures, CS, TAU, RB-Tree18 דוגמה Delete Fixup B B AD E C E C D A Case 1 x w new w x A E Case 2 B D C AD E C B x w c c, new x/black
19
19 Data Structures, CS, TAU, RB-Tree19 דוגמה Delete Fixup - מקרים Case 4 W שחור + בן ימני אדום שנה צבעים ו- Left_Rotate(P(X)) מטפל בבעיה וגורם ללולאה להסתיים Case 3 W שחור + בן שמאלי אדום + בן ימני שחור החלף צבעים בין W ובנו השמאלי ובצע Right_Rotate מצב 4
20
20 Data Structures, CS, TAU, RB-Tree20 דוגמה Delete Fixup A E Case 3 B D C A E B D C x w c x new w c Case 3 W שחור + בן שמאלי אדום + בן ימני שחור החלף צבעים בין W ובנו השמאלי ובצע Right_Rotate מצב 4
21
21 Data Structures, CS, TAU, RB-Tree21 דוגמה Delete Fixup A B D Case 4 C E E A D B C x w cc ‘c‘c W שחור + בן ימני אדום שנה צבעים ו- Left_Rotate(P(X)) מטפל בבעיה וגורם ללולאה להסתיים
22
22 Data Structures, CS, TAU, RB-Tree22 דוגמה Delete Fixup A E Case 3 B D C A E B D C x w c x new w c A B D Case 4 C E E A D B C x w cc ‘c‘c
23
23 Data Structures, CS, TAU, RB-Tree23 Demo http://www.seanet.com/users/arsen/avltree.html
24
24 Data Structures, CS, TAU, RB-Tree24 AVL TREE Similar to RB-tree (but different) Counts the height of each sub-tree explicitly PROPERTY: For sub-tree T: –| Height (Right(T)) – Height (Left(T)) | <= 1 H H-1
25
25 Data Structures, CS, TAU, RB-Tree25 AVL - cont n(h): the minimum number of internal nodes of an AVL tree of height h n=1, 2 easy. For n>2 an AVL at height h contains: –root –1 sub-tree of height h-1 –1 sub-tree of height h-2 n(h) = 1 + n(h-1) + n(h-2) n(h) > 2h(n-2)
26
26 Data Structures, CS, TAU, RB-Tree26 AVL – principle of operation Principles: –Insert + delete as in binary search tree. –After operation: the balance principle may be violated. –From bottom to top: Update height Examine balance If balance is violated – violation by at most 1 correct by rotation. 4 cases of rotation: LL RR LR RL (two of them symmetric to each other)
27
27 Data Structures, CS, TAU, RB-Tree27 Demo דוגמה לשאלה : 1. התייחסו לעץ אדום שחור כפי שנלמד בכיתה ומתואר ב - Cormen ( כל ה -Nils נחשבים כעלים וצבעם הוא שחור ). יהי הגובה של צומת y מוגדר כאורך המסלול ( נספר בצמתים ) הארוך ביותר מעלה ל -y. הספירה לא כוללת את y ואת ה -nil הנידון. יהי x צומת שמושמט ( שימו לב : הכוונה לצומת המושמט ולא לערך המושמט ) בפעולת ה -delete ( כמו שנלמד בכיתה בעץ חיפוש בינארי ). הננו מעוניינים בגובהו של x לפני ההשמטה. אזי : א ) החסם העליון ההדוק ביותר על גובהו של x הינו 0 ( כלומר גובה 0). ב ) החסם העליון ההדוק ביותר על גובהו של x הינו 1 ( כלומר גובה 1). ג ) החסם העליון ההדוק ביותר על גובהו של x הינו 2 ( כלומר גובה 2). ד ) החסם העליון ההדוק ביותר על גובהו של x הינו 3 ( כלומר גובה 3). ה ) אין חסם עליון על גובהו של x.
28
28 Data Structures, CS, TAU, RB-Tree28 Demo Solution: –Binary search tree deleted node (N) is either a leaf, or have one child. Leaf depth 0. One child: –Child CANNOT be BLACK and none of its descendants can be black (otherwise: depth black of N is not well defined). – Child is red. –Grandchild cannot be red (two reds in a row are not allowed) –Grandchild cannot be black – NO GRANDCHILD – DPETH <= 1.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.