עץ
This presentation is the property of its rightful owner.
Sponsored Links
1 / 18

עץ אדום -שחור PowerPoint PPT Presentation


  • 100 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

עץ אדום -שחור

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


5646253

עץ אדום-שחור

(CLR chapter 14)

  • עץ חיפוש בינארי

  • בכל צומת ביט אינפורמציה נוסף - צבע

  • צביעה מבטיחה שאין מסלול ארוך פי שניים מאחר

  • עץ “כמעט מאוזן”

  • (O(log nבמקרה גרוע ביותר

  • מבנה – כל צומת מכיל:

  • parent

  • left

  • right

  • color

  • key

Data Structures, CS, TAU, RB-Tree


5646253

תכונות

גובה שחור:מס’ הצמתים השחורים מצומת לעלה (לא כולל הצומת).

BH(T)

סימון:

1. כל צומת אדום או שחור

2. כל עלה (NIL) הוא שחור

3. אם צומת אדום שני ילדיו שחורים

4. כל מסלול פשוט מצומת לעלה מכיל מספר זהה של צמתים שחורים

Data Structures, CS, TAU, RB-Tree


5646253

דוגמא לעץ אדום-שחור

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


5646253

הוכחת הלמה

הוכחה: אינדוקציה (מוכח מלא בספר)

  • אינטואיציה:

  • רוב הצמתים שחורים

  • גובה שחור - אחיד:

  • מבחינת שחורים עץ מאוזן log

  • אדומים - רק תוספת (לכל היותר מכפילים כל מסלול)

Data Structures, CS, TAU, RB-Tree


5646253

רוטציות של עץ בינארי

Right_Rotate(T,y)

Y

X

X

Y

גדול

קטן

קטן

אמצע

אמצע

גדול

Left_Rotate(T,x)

  • עומק של  עולה/יורד ב- 1

  • עומק של  אינו משתנה

Data Structures, CS, TAU, RB-Tree


5646253

השפעת רוטציה על עומק העץ

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


Insert

ביצוע Insert

1. הכנסת Xבמקום המתאים (כמו בעץ בינארי) ובצבע אדום

2. ביצוע תיקונים מלמטה למעלה - אם יש שני אדומים רציפים

Data Structures, CS, TAU, RB-Tree


Insert1

תיקון צבעים ב-Insert

  • בתיקון:

א) הצפת אדום האב כלפי מעלה (העברת הבעיה כלפי מעלה)

או:

ב) השכנת הבעיה במסגרת משפ’ הסבא ע”י התקזזות עם הדוד (עצירת הבעיה)

 אם צומת אדום ואביו אדום

 האח שחור

  • תיקון אם צומת אדום וגם אביו אדום

Data Structures, CS, TAU, RB-Tree


Case i

דוד אדום – 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


Case ii

דוד שחור – 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


Insert2

דוגמא ל-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


Insert3

דוגמא ל-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


Delete

ביצוע Delete

Y - מושמט

X - בנו

Y

X

3) אם Yהיה שחור בצע

RB_DELETE_FIXUP(X)

3א) אם Xאדום צבע בשחור וסיים

1) מבצעים deleteכמו בעץ חיפוש בינארי רגיל

2) אם Yהיה אדום  כל תכונות RB נשמרו.

עצור.

Data Structures, CS, TAU, RB-Tree


Delete fixup

דוגמה Delete Fixup

ל- Xיש אח כי Xהוא שחור (כפול)!

יהי Wאח של X

X - שחור

X - מקום שמעליו בוצעה השמטה

- נחשוב על Xכעל מכילשחור + שחור חסר

 כל מסלול בעץ הוא חוקי

מטרה: להיפטר מהשחור המיותר

Data Structures, CS, TAU, RB-Tree


Delete fixup1

דוגמה 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


Delete fixup2

דוגמה 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


Delete fixup3

דוגמה Delete Fixup - מקרים

Wשחור + בן שמאלי אדום + בן ימני שחור

Case 3

החלף צבעים בין Wובנו השמאלי ובצע

Right_Rotate

מטפל בבעיה וגורם ללולאה להסתיים

Case 4

Wשחור + בן ימני אדום

שנה צבעים ו-

Left_Rotate(P(X))

מצב 4

Data Structures, CS, TAU, RB-Tree


Delete fixup4

דוגמה 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


  • Login