הרצאה 8: עץ בינארי מאוזן, avl tree
DESCRIPTION
הרצאה 8: עץ בינארי מאוזן, AVL Tree. הגדרה ומטרה. גובהו של עץ בינארי מוגדר להיות המסלול הארוך שניתן ללכת עליו מהשורש לאחד העלים. ראינו שפעולות בסיסיות בעץ חיפוש בינארי, כמו חיפוש, הכנסה והוצאת ערך תלוי בגובהו של העץ. ולכן. מטרה: להקטין ככל הניתן את גובהו של עץ חיפוש בינארי. AVL Tree. - PowerPoint PPT PresentationTRANSCRIPT
1מבנה נתונים , סמסטר א' תשס"ד
, 8הרצאה מאוזן: בינארי AVLעץTree
2מבנה נתונים , סמסטר א' תשס"ד
הגדרה ומטרהללכת שניתן הארוך המסלול להיות מוגדר בינארי עץ של גובהו
. העלים לאחד מהשורש עליו
, , הכנסה חיפוש כמו בינארי חיפוש בעץ בסיסיות שפעולות ראינו . העץ של בגובהו תלוי ערך והוצאת
ולכן
עץ: של גובהו את הניתן ככל להקטין מטרהבינארי חיפוש
3מבנה נתונים , סמסטר א' תשס"ד
AVL TreeAVL Tree . על לו ניתן שמו מאוזן בינארי חיפוש עץ של סוג הוא
: ממציאיו שם
Adelson-Velskii and Landis
:AVL Treeהגדרת
בינארי 1. חיפוש עץ הוא העץ
לכל 2. הוא צומת מכל היוצאים העץ תתי של הגבהים הבדל1היותר
הוא 3. עץ תת .AVL Treeכל
4מבנה נתונים , סמסטר א' תשס"ד
דוגמאות להגדרה
AVLלא AVL
5מבנה נתונים , סמסטר א' תשס"ד
AVLגובהו של עץ
צמתים הוא מאוזן אםn בעל T נאמר שעץ בינארי הגדרה:•
הוא עץ מאוזן AVL עץ טענה )ללא הוכחה(:•
)(log)( nOTh
6מבנה נתונים , סמסטר א' תשס"ד
AVLפקטור האיזון של צומת ב-
עץ לתחזק מנת , AVLעל נוסיף איזון על תמיד שישמור כךשיקרא חדש "ארגומנט האיזון" , פקטור את שיכיל העץ לצמתי
של השמאלי העץ לתת הימני העץ תת בין הגובה הפרשי על המידעהצומת.
ב – • גבוה הימני העץ תת , " iאם כבד נסמן אזי השמאלי העץ מתת(i+ימני" )
ב – • גבוה השמאלי העץ תת , " iאם כבד נסמן אזי הימני העץ מתת-(iשמאלי" )
•( " " , מאוזן נסמן גובה באותו הם העץ תתי שני (0אם
תת: • גובה את המציין פקטור גם צומת לכל מוסיפים לרוב הערה. שלו השורש היא שהצומת העץ
ל – גדל צומת של האיזון גורם ל - )2אם רוטציה-( 2או לבצע יש אזי. שלו השורש שהיא העץ תת את לאזן כדי
7מבנה נתונים , סמסטר א' תשס"ד
של הימני העץ שתת ב - pנניח העץ 2גבוה מתתבהתאם. הרוטציה את נבצע אזי השמאלי
: הבאים למצבים
מ – wאם :vגבוה לו שווה או
.1 p של השמאלי הבן להיות uיהפוך
.2v של הימני הבן להיות .pיהפוך
אחרת:
ל – • בודד ימני גלגול uבצע
ל – • בודד שמאלי גלגול .pבצע
רוטציה שמאלית
p
u
wv
8מבנה נתונים , סמסטר א' תשס"ד
pu
u
p
u
v
pv
up
w – מ vגבוה
v – מ wגבוה
wvwv
ww
9מבנה נתונים , סמסטר א' תשס"ד
דוגמא ראשונה לרוטציה שמאלית
50
30
70
80
40
20
10
35
45
25
78
85
10מבנה נתונים , סמסטר א' תשס"ד
דוגמא ראשונה לרוטציה שמאלית
50
30
70
80
40
20
10
35
45
25
78
85
p
u
wv
+2
0
00
11מבנה נתונים , סמסטר א' תשס"ד
דוגמא ראשונה לרוטציה שמאלית
50
30
80
70
40
20
10
35
45
25
78
85
p
u
w
v
-1
0+1
0
גלגול ל - שמאלי
p
12מבנה נתונים , סמסטר א' תשס"ד
דוגמא שניה לרוטציה שמאלית
50
30
70
80
60
40
20
75
35
85
72
13מבנה נתונים , סמסטר א' תשס"ד
דוגמא שניה לרוטציה שמאלית
50
30
70
80
60
40
20
75
35
85
72
p
u
wv
+2
-10
0-1
0
14מבנה נתונים , סמסטר א' תשס"ד
דוגמא שניה לרוטציה שמאלית
50
30
70
75
60
40
20
35
80
p
v
u
+3
+20
-1
85
w0
72
0 ימני גלגולל - uבודד
15מבנה נתונים , סמסטר א' תשס"ד
דוגמא שניה לרוטציה שמאלית
50
30
70
75
60
40
20
35
80
p
v
u
0
0
-1
85
w0
72
0
0
גלגול שמאלי
ל - pבודד
16מבנה נתונים , סמסטר א' תשס"ד
של השמאלי העץ שתת ב – pנניח מתת 2גבוה . בהתאם הרוטציה את נבצע אזי הימני העץ
: הבאים למצבים
מ – wאם לו :vגבוה שווה או
.1 p של הימני הבן להיות uיהפוך
.2v של השמאלי הבן להיות .pיהפוך
אחרת:
ל – • בודד שמאלי גלגול uבצע
ל – • בודד ימני גלגול .pבצע
ימנית רוטציה
p
u
w v
17מבנה נתונים , סמסטר א' תשס"ד
up
p
u
u
v
pv
u p
w – מ גבוהv
v – מ גבוהw
ww
ww
vv
18מבנה נתונים , סמסטר א' תשס"ד
דוגמא ראשונה לרוטציה ימנית
50
30
70
80
60
40
20
10
25
9
19מבנה נתונים , סמסטר א' תשס"ד
דוגמא ראשונה לרוטציה ימנית
50
30
70
80
60
40
20
10
25
9
p
u
w v
-2
0-1
0-1
0
20מבנה נתונים , סמסטר א' תשס"ד
דוגמא ראשונה לרוטציה ימנית
50
30
70
80
60
40
20
10
25
9
p
u
w
v
0
0
0-1
0 0גלגול
ל - ימניp
21מבנה נתונים , סמסטר א' תשס"ד
דוגמא שניה לרוטציה ימנית
50
30
70
80
60
40
20
10
22
28
25
22מבנה נתונים , סמסטר א' תשס"ד
דוגמא שניה לרוטציה ימנית
50
30
70
80
60
40
20
10
22
28
25
p
u
w v
-2
0+1
00
0 0
23מבנה נתונים , סמסטר א' תשס"ד
דוגמא שניה לרוטציה ימנית
50
30
70
80
60
40
25
10
28
20
p
u
w
v
-2
0-1
00
0
22
0
גלגול שמאלי
ל - uבודד
24מבנה נתונים , סמסטר א' תשס"ד
דוגמא שניה לרוטציה ימנית
50
30
70
80
60
40
25
10
28
20
pu
w
v
0
0
00
0
22
ימני 00 גלגולל - pבודד
25מבנה נתונים , סמסטר א' תשס"ד
הוכחת נכונותם של הגלגולים: רוטציות בעץ משמרות את היותו עץ חיפוש בינאריטענה•
: מספיק להסתכל על שני הגלגולים הפשוטים:הוכחה•
גלגול ימני:•
–u בן שמאלי של p לכן קטן ממנו, ולכן העברתו של ,p להיות בן תקינהuימני של
– v הוא צאצא שמאלי של p ואחרי הגלגול הוא נשאר בתת העץ ,.pהשמאלי של
נותרים כפי u ותת העץ השמאלי של pתת העץ הימני של –שהם.
גלגול שמאלי: הוכחה דומה לגלגול ימני•
חיפוש עץ נשאר גלגול אחרי העץבינארי
26מבנה נתונים , סמסטר א' תשס"ד
אבחנה חשובה
הפרת איזון בעץ בזמן הכנסת או הוצאת איבר, תתכן רק בצמתים שהן על מסלול הכנסת או הוצאת האיבר
חשובה הערהעל רק נעשות רוטציות בזמן והגבהים האיזון פקטורי עדכוני
המוזזים הצמתים
27מבנה נתונים , סמסטר א' תשס"ד
AVLהכנסת איבר לעץ את 1. , sהכנס במסלול שעברת הצמתים כל את והכנס לעץ
) ויהי ) החדש העלה כולל לא החדש xלמחסנית העלה: לעץ שנוסף
של 2. האיזון פקטור , x = 0הגדר
עוד 3. :xכל , בצע השורש איננו
את 1. של Pמהמחסנית )pהוצא האבא ( xהוא בעץ
.2. סיים אם
הצב 3.
של 4. האיזון פקטור את pעדכן
.5- ב .pאם , וסיים רוטציה בצע האיזון הופר
הצב 6.
0)( xh
1)()( xhph
1)()( xhph
px אחת: רוטציה מתבצעת ההכנסה תהליך שבזמן לב שימו הערה
היותר לכל
28מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להכנסת איבר לעץ
50
30
70
80
60
40
20
10
25
-1
00
00
0
0
00
לפני העץההכנסה
3
1
00
2
01
0 0
29מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להכנסת איבר לעץ
50
30
70
80
60
40
20
10
28
25
x
האיבר הכנסת28
המחסנית תיאור: החיפוש אחרי
50 30 20 25
3- 1
1 0
0 00 0
2- 1
1 0
0 0 0 0
0 0
0 0
0 0
30מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להכנסת איבר לעץ
50
30
70
80
60
40
20
10
28
25
x
האיבר הכנסת28
המחסנית תיאורהוצאת :25אחרי
50 30 20
3- 1
1 0
0 00 0
2- 1
1 0
0 0 0 0
0 0
0 0
0 0
p
h(p) <> h(x)+1
31מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להכנסת איבר לעץ
50
30
70
80
60
40
20
10
28
25
x
האיבר הכנסת28
המחסנית תיאורהוצאת :25אחרי
50 30 20
3- 1
1 0
0 00 0
2- 1
1 0
0 0
0 0
1 +1
0 0
p h(p) = h(x)+1
פקטור עדכון וכןשל pהאיזון
32מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להכנסת איבר לעץ
50
30
70
80
60
40
20
10
28
25
x
האיבר הכנסת28
המחסנית תיאורהוצאת :20אחרי
50 30
3- 1
1 0
0 00 0
2- 1
1 0
0 0
0 0
1 +1
0 0
p
h(p) <> h(x)+1
33מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להכנסת איבר לעץ
50
30
70
80
60
40
20
10
28
25
x
האיבר הכנסת28
המחסנית תיאורהוצאת :20אחרי
50 30
3- 1
1 0
0 00 0
2- 1
2 +1
0 0
0 0
1 +1
0 0
p
h(p) = h(x)+1
של האיזון פקטור ועדכוןp
34מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להכנסת איבר לעץ
50
30
70
80
60
40
20
10
28
25
x
האיבר הכנסת28
המחסנית תיאורהוצאת :30אחרי
50
3- 1
1 0
0 00 0
2- 1
2 +1
0 0
0 0
1 +1
0 0
p
h(p) <> h(x)+1
35מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להכנסת איבר לעץ
50
30
70
80
60
40
20
10
28
25
x
האיבר הכנסת28
המחסנית תיאורהוצאת :30אחרי
50
3- 1
1 0
0 00 0
3- 2
2 +1
0 0
0 0
1 +1
0 0
p
h(p) = h(x)+1
של האיזון פקטור ועדכוןp
36מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להכנסת איבר לעץ
50
30
70
80
60
40
20
10
28
25
v
האיבר הכנסת28
המחסנית תיאורהוצאת :30אחרי
50
3- 1
1 0
0 00 0
3- 2
2 +1
0 0
0 0
1 +1
0 0
p
ב איזון הפרת -p
u
w
37מבנה נתונים , סמסטר א' תשס"ד
30
40
25
10
28
20
p
u
w
v
- 2
0-1
00
0
22
0גלגול
שמאלי ל - uבודד
AVLדוגמא להכנסת איבר לעץ
50
70
80
60
האיבר הכנסת28
המחסנית תיאורהוצאת :30אחרי
50
3- 1
1 0
0 00 0
38מבנה נתונים , סמסטר א' תשס"ד
30
40
25
10
28
20
pu
w
v0 2
22
ימני גלגולל - pבודד
AVLדוגמא להכנסת איבר לעץ
50
70
80
60
האיבר הכנסת28
המחסנית תיאורהוצאת :30אחרי
50
3- 1
1 0
0 00 00 10 1
0 0 0 0 0 0 0 0
39מבנה נתונים , סמסטר א' תשס"ד
30
40
25
10
28
20
0 2
22
המחסנית ריקוןהעץ והחזרת
המאוזן
AVLדוגמא להכנסת איבר לעץ
50
70
80
60
האיבר הכנסת28
3- 1
1 0
0 00 00 10 1
0 0 0 0 0 0 0 0
40מבנה נתונים , סמסטר א' תשס"ד
AVLהוצאת איבר מעץ את 1. , sהוצא במסלול שעברת הצמתים כל את והכנס מהעץ
של ) במקרה צורך יש אם המוצא האיבר כולל למחסנית ) בנים שני עם צומת ביטול
צומת 2. : xלכל הבאים הצעדים את בצע ההוצאה במסלול
.a של האיזון פקטור את תתי xעדכן גבהי הפרש לפיזה ברגע שלהם השורש שהוא העצים
.b של גובהו את המעודכנים xעדכן העצים תתי גבהי לפישלו
.c הוא האיזון פקטור מתאימה- 2או 2אם רוטציה בצע אזוהמשך .
.d – ש העץ תת גובה , xאם השתנה לא שלו השורש הואסיים
.e , תקין האיזון פקטור אך השתנה העץ תת גובה אםהמשך.
רוטציות: מספר יתכנו התהליך שבזמן לב שימו הערה
41מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להוצאת איבר מעץ
50
30
70
80
60
40
20
75
35
85
ההוצאה לפני העץ
44
48
10
1- 4
1+ 3
1- 1
0 0
1+ 2
1+ 1
0 0
0 0
1+ 2
0 1
0 00 0
0 0
42מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להוצאת איבר מעץ
50
70
80
60
40
20
75
35
85
האיבר 30הוצאת
44
48
10
המחסנית ההתחלתית:
40" 30 "5030
70
80
60
40
20
75
85
44
48
10
1- 4
1+ 3
1- 1
0 0
1+ 2
1+ 1
0 0
0 0
1+ 2
0 1
0 00 0
0 0
43מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להוצאת איבר מעץ
50
35
70
80
60
40
20
75
85
האיבר 30הוצאת
44
48
10
המחסנית הוצאת אחרי
40:
"30 "50 x
פקטור עדכוןשל xהאיזון
ב - איזון xהפרת
2+ 2
u
w
1- 4
1+ 3
1- 1
0 0 1+ 1
0 0
1+ 2
0 1
0 00 0
0 0
44מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להוצאת איבר מעץ
50
35
70
80
60
44
20
75
85
האיבר 30הוצאת
40
48
10
המחסנית הוצאת אחרי
40:
"30 "50
רוטציה ל – שמאלית
x
העץ תת גובההשתנה xשל
0 1
x
1- 4
1+ 3
1- 1
0 0 0 00 0
1+ 2
0 1
0 00 0
0 0
45מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להוצאת איבר מעץ
50
35
70
80
60
44
20
75
85
האיבר 30הוצאת
40
48
10
המחסנית הוצאת אחרי
"30:"
500 1
x0 2
צורך איןאבל, ברוטציההעץ תת גובה
מצביע xש – השתנה עליושנשמר מזה
במחסנית
1- 41+ 3
1- 1
0 0 0 00 0
1+ 2
0 1
0 00 0
0 0
46מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להוצאת איבר מעץ
50
35
70
80
60
44
20
75
85
האיבר 30הוצאת
40
48
10
המחסנית הוצאת אחרי
ריקה: 500 1
x
0 2
פקטור עדכוןשל : xהאיזון
תקין
0 3
1- 1
0 0 0 00 0
1+ 2
0 1
0 00 0
0 0
47מבנה נתונים , סמסטר א' תשס"ד
AVLדוגמא להוצאת איבר מעץ
50
35
70
80
60
44
20
75
85
הוצאת אחרי המאוזן העץ30האיבר
40
48
10
0 1
0 2
0 3
1- 1
0 0 0 00 0
1+ 2
0 1
0 00 0
0 0
48מבנה נתונים , סמסטר א' תשס"ד
דוגמא://http . . / / / .www seanet com users arsen avltree html
, , מהעץ: צומת מורידים כאשר זו שבדוגמא לב שימו הערה , שלמדנו כפי העוקב ולא לערך הקודם הוא המחליף
7בהרצאה
49מבנה נתונים , סמסטר א' תשס"ד