Presentation is loading. Please wait.

Presentation is loading. Please wait.

Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.

Similar presentations


Presentation on theme: "Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר."— Presentation transcript:

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

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

3 Data Structures, CS, TAU, RB-Tree 3 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 Data Structures, CS, TAU, RB-Tree 4 הוכחת הלמה : הוכחה : אינדוקציה ( מוכח מלא בספר ) אינטואיציה : - רב הצמתים שחורים - רב הצמתים שחורים - גובה שחור - אחיד : - גובה שחור - אחיד : מבחינת שחורים עץ מאוזן  log - אדומים - רק תוספת ( לכל היותר מכפילים - אדומים - רק תוספת ( לכל היותר מכפילים כל מסלול ) כל מסלול )

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

6 Data Structures, CS, TAU, RB-Tree 6 השפעת רוטציה על עומק העץ 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 change!

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

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

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

10 Data Structures, CS, TAU, RB-Tree 10 דוד שחור - 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) - בעיה עלתה למעלה ( רק Case I)

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

14 Data Structures, CS, TAU, RB-Tree 14 ביצוע Delete_Fixup X - שחור X - מקום שמעליו בוצעה השמטה - נחשוב על X כעל מכיל שחור + שחור חסר  כל  מסלול  בעץ  הוא  חוקי  כל  מסלול  בעץ  הוא  חוקי מטרה : להיפטר מהשחור המיותר יהי W אח של X ל - X יש אח כי X הוא שחור ( כפול )! מקרים : Case 1: W אדום החלף צבעי P(X), W ו - Left_Rotate(P(X)) Left_Rotate(P(X))  מוליך  ל  Case 1,2,3,4  כל  המסלולים  לתתי  עצים  באותו  גובה  שחור

15 Data Structures, CS, TAU, RB-Tree 15 ביצוע Delete_Fixup Case 2: W שחור + 2 בנים שחורים הורד  שחור  מ  W ו - X והוסף ל - P(X)  X שחור בודד  W אדום  שחור או אדום ( נהפך לשחור או לדו - שחור ) לדו - שחור ) P(X) Case 3: W שחור + בן שמאלי אדום + בן ימני שחור החלף  צבעים  בין  W ובנו השמאלי ובצע Right_Rotate  מצב 4

16 Data Structures, CS, TAU, RB-Tree 16 ביצוע Delete_Fixup Case 4: W שחור + בן ימני אדום שנה  צבעים  ו  Left_Rotate(P(X))  מטפל בבעיה וגורם ללולאה להסתיים

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

18 Data Structures, CS, TAU, RB-Tree 18 דוגמה 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 wcc ‘c‘c‘c‘c


Download ppt "Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר."

Similar presentations


Ads by Google