Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Lab 6: AVL Trees 29/10/20101ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Lab 6: AVL Trees 29/10/20101ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι."— Μεταγράφημα παρουσίασης:

1 Lab 6: AVL Trees 29/10/20101ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

2 29/10/2010  AVL ( G.M. Adelson-Velskii, E.M. Landis) δέντρο:  Είναι Δυαδικό Δέντρο Αναζήτησης  Τα υποδέντρα ενός οποιουδήποτε κόμβου έχουν ύψος το οποίο διαφέρει το πολύ κατά ένα  Χρόνοι:  Εισαγωγή  Διαγραφή  Αναζήτηση 2ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

3 29/10/2010 2 13 2 13 4 2 2 1 2 3 4 3ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

4 29/10/20104ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

5 29/10/2010 Εισαγωγή 72: Εισαγωγή 26: Εισαγωγή 9: 72 26 9 ΑΝΙΣΟΖΥΓΙΑ ΠΕΡΙΣΤΡΟΦΗ  Εισαγωγή των στοιχείων {72, 26, 9} 5ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

6 29/10/2010  Πριν την εισαγωγή: τα δένδρα R, S, T έχουν το ίδιο ύψος, h.  Μετά την εισαγωγή: έστω ότι ο κόμβος εισάγεται στο δένδρο R με αποτέλεσμα το ύψος του να γίνει h+1.  Η αριστερή περιστροφή υλοποιεί το εξής: A περιστροφή Α Β C R S T h h h h+1 B A C R S T h h 6ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

7  Αριστερή περιστροφή του (A,B) σημαίνει 1. Α.left = Β.right 2. Β.right = Α 3. Α.height = C.height+1 4. Β.height = C.height + 2  Πριν την περιστροφή ο Α ήταν ο πατέρας του Β, και μετά, ο Β είναι ο πατέρας του Α.  Το δένδρο παραμένει δυαδικό δένδρο αναζήτησης:  Κάθε τιμή του Υ είναι μικρότερη από την τιμή του u,  η τιμή του u είναι μεγαλύτερη από την τιμή του v.  Μετά την περιστροφή το δένδρο είναι AVL: Α.height = h + 1 = ύψος του R. 29/10/20107ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

8 29/10/2010 50 42 5 46 43 61 65 72 99 58 51 ΑΝΙΣΟΖΥΓΙΑ Α-ΠΕΡΙΣΤΡΟΦΗ 8ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

9 29/10/2010  Συμμετρική ως προς την αριστερή περιστροφή.  Πριν την εισαγωγή: τα δένδρα R, S, T έχουν το ίδιο ύψος, h.  Μετά την εισαγωγή: έστω ότι ο κόμβος εισάγεται στο δένδρο Τ με αποτέλεσμα το ύψος του Τ να γίνει h+1. Α Β C R S T C A R S T B Δ περιστροφή h h h h+1 9ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

10 29/10/2010  Δεξιά περιστροφή του (A,C) σημαίνει 1. Α.right = C.left 2. C.left = Α 3. Α.height = B.height+1 4. C.height = B.height + 2  Πριν την περιστροφή ο Α ήταν ο πατέρας του C, και μετά, ο C είναι ο πατέρας του Α.  Το δένδρο παραμένει δυαδικό δένδρο αναζήτησης. 10ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

11 29/10/2010  Τα δένδρα Χ και W έχουν ύψος h. Μετά από κάποια εισαγωγή, το w έχει ύψος h+1, προκαλώντας ανισοζυγία στο u. u v w X Y Z W w v u XY ZW AΔ περιστροφή hh hh+1 11ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

12 29/10/2010  Με την εισαγωγή των στοιχείων 72, 26, 9, 2, 21, 25 σε ένα ΑVL-δένδρο, δημιουργείται ανισοζυγία στον κόμβο 26.  Με εφαρμογή ΑΔ περιστροφής έχουμε: 26 72 9 22125 ΑΝΙΣΟΖΥΓΙΑ ΑΔ ΠΕΡΙΣΤΡΟΦΗ 12ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

13 29/10/2010  Τα δένδρα Χ και W έχουν ύψος h. Μετά από κάποια εισαγωγή, το w έχει ύψος h+1, προκαλώντας ανισοζυγία στο u. u v w X Y Z W w u v XY ZW ΔΑ περιστροφή h h hh+1 13ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

14 29/10/2010 4 2 3 1 6 51415 713 ΑΝΙΣΟΖΥΓΙΑ ΔΑ ΠΕΡΙΣΤΡΟΦΗ 14ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

15 29/10/2010  ΑΔ περιστροφή του (u,v,w) υλοποιείται ως εξής: 1. v.right = w.left, 2. u.left = w.right, 3. w.left = v, 4. w.right = u, 5. v.height, u.height, w.height = …  ΔΑ περιστροφή του (u,v,w) υλοποιείται ως εξής: 1. v.left = w.right, 2. u.right = w.left, 3. w.left = u, 4. w.right = v, και 5. v.height, u.height, w.height = ….  H περιστροφές δεν παραβιάζουν τη ΔΔΑ συνθήκη.  Το δένδρο που δημιουργείται είναι AVL-δένδρο (οι κόμβοι v και u έχουν ύψος h+1). 15ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

16 29/10/2010  Στην θεωρία είναι εύκολο.  Βλέπουμε τις κατευθύνσεις που ακολουθήσαμε για να εισάξουμε τον κόμβο  Ανάλογα με τις κατευθύνσεις, επιλέγουμε το είδος της περιστροφής.  Τι γίνεται τώρα που πρέπει να γράψουμε κώδικα? 16ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

17 1. Εισάγουμε το στοιχείο στο κατάλληλο φύλλο όπως ακριβώς σε ένα δυαδικό δένδρο αναζήτησης. Καταγράφουμε τη διαδρομή που ακολουθήσαμε, δηλαδή αν r είναι η ρίζα και u είναι το φύλλο που προσθέσαμε τότε παίρνουμε διαδρομή με μορφή: 2. Ακολουθούμε τη διαδρομή προς τα πίσω και δίνουμε στα πεδία height των κόμβων τις νέες τους τιμές. 3. Αν σε κάποιο σημείο αυτό προκαλέσει ανισοζυγία, και μόλις συμβεί αυτό, (δηλ. αν έχει σαν αποτέλεσμα κάποιοι κόμβοι να έχουν παιδιά που το ύψος τους διαφέρει κατά τιμή >1), τότε εφαρμόζουμε στον κόμβο αυτό, έστω v i, την κατάλληλη περιστροφή. Επιλέγουμε την περιστροφή ως εξής: 29/10/2010ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι17

18  αν ο v i-1 είναι αριστερό παιδί του v i και ο v i-2 αριστερό παιδί του v i-1 τότε εφαρμόζουμε την A-περιστροφή,  αν ο v i-1 είναι δεξιό παιδί του v i και ο v i-2 δεξιό παιδί του v i-1 τότε εφαρμόζουμε τη Δ- περιστροφή,  αν ο v i-1 είναι αριστερό παιδί του v i και ο v i-2 δεξιό παιδί του v i-1 τότε εφαρμόζουμε την AΔ- περιστροφή,  αν ο v i-1 είναι δεξιό παιδί του v i και ο v i-2 αριστερό παιδί του v i-1 τότε εφαρμόζουμε τη ΔA-περιστροφή. 29/10/2010ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι18

19  Περιστροφή αριστερά:  Κάναμε εισαγωγή αριστερά δύο φορές  Αριστερή Περιστροφή  singleRotationLeft()  Κάναμε εισαγωγή αριστερά και μετά δεξία  ΑΔ περιστροφή  doubleRotationLeftRight()  Περιστροφή δεξιά:  Κάναμε εισαγωγή δεξιά δύο φορές  Δεξιά Περιστροφή  singleRotationRight()  Κάναμε εισαγωγή δεξιά και μετά αριστερά  ΔΑ περιστροφή  doubleRotationRightLeft() 29/10/201019ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

20  Βρίσκονται στα αρχεία  AVLTree.h  AVLTree.cpp  Συμπληρώστε την:  insertNode()  Υλοποίηστε:  singleRotationLeft()  singleRotationRight()  doubleRotationLeftRight()  doubleRotationRightLeft() 29/10/201020ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι

21 29/10/201021ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι


Κατέβασμα ppt "Lab 6: AVL Trees 29/10/20101ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google