ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Σχετικά έγγραφα
Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα

Διδάσκων: Παναγιώτης Ανδρέου

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 8-1

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 18: B-Δένδρα

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ

Διδάσκων: Κωνσταντίνος Κώστα

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Διάλεξη 14: Δέντρα IV - B-Δένδρα

Διάλεξη 24: B-Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Ισοζυγισμένα υαδικά έντρα Αναζήτησης

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα?

Εκτενείς Δομές Δεδομένων

Εκτενείς Δομές Δεδομένων

3 Αναδροµή και Επαγωγή

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Αλγόριθµοι και Πολυπλοκότητα

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

ιαφάνειες παρουσίασης #10 (β)

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Ενότητα 7 Ουρές Προτεραιότητας

Ισοζυγισµένο έντρο (AVL Tree)

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

9. Κόκκινα-Μαύρα Δέντρα

Δομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων

AVL-trees C++ implementation

Εργασία 3 Σκελετοί Λύσεων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND)

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε.

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Ελάχιστα Γεννητορικά ένδρα

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Insert(K,I,S) Delete(K,S)

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 3 Δέντρα

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Δομές Δεδομένων και Αλγόριθμοι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών. Καθηγητής: Ν. Μ. Μισυρλής 29 Μαΐου / 18

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

ΗΥ240 - Παναγιώτα Φατούρου 2

Διδάσκων: Παναγιώτης Ανδρέου

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Θεωρία Γραφημάτων 5η Διάλεξη

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Θεωρία Γραφημάτων 5η Διάλεξη

Red-Black Δέντρα. Red-Black Δέντρα

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Διδάσκων: Παναγιώτης Ανδρέου

Ενότητα 7 Ουρές Προτεραιότητας

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Transcript:

AVL- ένδρα Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Υλοποίηση ΑVL-δένδρων Εισαγωγή κόµβων και περιστροφές ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-1

AVL ένδρα Είναι δυνατό να οργανώσουµε ένα δυαδικό δένδρο αναζήτησης έτσι ώστε το ύψος του να είναι το µικρότερο δυνατό; (τάξεως Ο(lg n)) Iδέα: για να έχουµε µικρό ύψος, αν u είναι ένας κόµβος του δένδρου τότε και τα δύο του υπόδενδρα έχουν περίπου τον ίδιο αριθµό κόµβων. Πρώτη προσπάθεια: για κάθε κόµβο και τα δυο του υπόδενδρα έχουν το ίδιο ύψος τέλεια δένδρα δένδρα µε αριθµό κόµβων 2 h+1-1. εύτερη προσπάθεια: Ένα δυαδικό δένδρο είναι AVL-δένδρο (Adelson-Velskii and Landis) αν για κάθε κόµβο του u τα ύψη των παιδιών του u διαφέρουν το πολύ κατά 1. (υποθέτουµε πως το κενό δένδρο έχει ύψος 1). Θα δούµε ότι 1. το ύψος ενός AVL-δένδρου µε n κόµβους είναι O(log n), 2. διαδικασίες εισαγωγής και εξαγωγής κόµβων µπορούν να διατυπωθούν έτσι ώστε η AVL-συνθήκη να διατηρείται. Ένα πλήρες δένδρο είναι και AVL-δένδρο. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-2

Παραδείγµατα AVL- δένδρων ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-3

Το ύψος ενός AVL-δένδρου Έστω ότι Ν(h) είναι ο ελάχιστος αριθµός κόµβων ενός AVL-δένδρου ύψους h. Έχουµε: N(0) = 1, N(1) = 2. Για h 2, ένα AVL-δένδρο πρέπει να έχει µια ρίζα, ένα από τα δύο του υπόδενδρα να έχει ύψος h-1, τα ύψη των δύο υποδένδρων να διαφέρουν, το πολύ, κατά 1. Άρα, Ν(h) = N(h-1) + N(h-2) + 1 Η αναδροµική σχέση θυµίζει την ακολουθία αριθµών Fibonacci. Οπως αυτή, η Ν µεγαλώνει εκθετικά, δηλ. N(h) Θ(c h ). Eποµένως: Θεώρηµα: Το ύψος ενός AVL-δένδρου µε n κόµβους είναι της τάξης Ο(log n). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-4

(Ένα) µικρότερο ΑVL-δένδρο ύψους 5 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-5

Υλοποίηση AVL ένδρων Ηπαράσταση ενός κόµβου AVL-δένδρου είναι παρόµοια µε αυτή ενός κόµβου A, µε την προσθήκη ενός επιπλέον πεδίου, που καταγράφει το ύψος του δένδρου που ριζώνει στον συγκεκριµένο κόµβο. ηλαδή, ένας κόµβος µπορεί να υλοποιηθεί ως µια εγγραφή AVLnode µε τέσσερα πεδία. val, όπου αποθηκεύουµε το κλειδί κόµβου, height, τύπου int, όπου αποθηκεύουµε το ύψος του κόµβου, left, τύπου pointer, ο οποίος δείχνει το αριστερό υπόδενδρο που ριζώνει στον συγκεκριµένο κόµβο, και right, τύπου pointer, ο οποίος δείχνει το δεξιό υπόδενδρο που ριζώνει στον συγκεκριµένο κόµβο. v h Το πεδίο height χρησιµοποιείται για τη διακρίβωση ανισοζυγίας (µε σύγκριση των ανάλογων πεδίων των παιδιών κάθε κόµβου). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-6

Εισαγωγή κόµβου 1. H εισαγωγή κόµβου γίνεται όπως ακριβώς και σε ένα δυαδικό δένδρο αναζήτησης, µε τη διαφορά ότι καταγράφουµε τη διαδροµή που ακολουθείται (από τη ρίζα προς τα φύλλα). 2. Στη συνέχεια, ακολουθούµε τη διαδροµή προς τα πίσω και δίνουµε στα πεδία height των κόµβων τις νέες τους τιµές. 3. Αν αυτό προκαλέσει κάποια ανισοζυγία, δηλαδή, αν έχει σαν αποτέλεσµα κάποιος κόµβος να έχει παιδιά που το ύψος τους διαφέρει κατά τιµή >1, τότε αναπροσαρµόζουµε τα υποδένδρα ώστε το δένδρο να γίνει ξανά AVL. Οι αναπροσαρµογές ονοµάζονται περιστροφές (rotations). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-7

Παράδειγµα Εισαγωγή των 72, 26, 9, στο κένο AVL-δένδρο µε αυτή τη σειρά: 72 26 9 κενό δένδρο 72 72 72 26 26 9 26 9 72 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-8

Αριστερή Περιστροφή Πριν την εισαγωγή: τα δένδρα R, S, T έχουν το ίδιο ύψος, h. Μετά την εισαγωγή: έστω ότι ο κόµβος εισάγεται στο δένδρο Rµε αποτέλεσµα το ύψος του να γίνει h+1. Η αριστερή περιστροφή υλοποιεί το εξής: A περιστροφή ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-9

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

ΠαράδειγµαΑ-περιστροφής 50 42 72 5 46 61 99 43 58 65 50 51 42 61 5 46 58 72 43 51 65 99 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-11

εξιά Περιστροφή Συµµετρική προς την αριστερή περιστροφή. Πριν την εισαγωγή: τα δένδρα R, S, T έχουν το ίδιο ύψος, h. Μετά την εισαγωγή: έστω ότι ο κόµβος εισάγεται στο δένδρο Τ µε αποτέλεσµα το ύψος του να γίνει h+1. Β Α C περιστροφή A C R B S T R S T ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-12

ιαδικασία -περιστροφής εξιά περιστροφή του (A,C) σηµαίνει 1. Α.right = C.left 2. C.left = Α 3. Α.height = 4. C.height = Πριν την περιστροφή ο Α ήταν ο πατέρας του C, και µετά, ο C είναι ο πατέρας του Α. Το δένδρο παραµένει δυαδικό δένδρο αναζήτησης. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-13

Α -Περιστροφή Τα δένδρα Χ και W έχουν ύψος h. Μετά από κάποια εισαγωγή, το w έχει ύψος h+1, προκαλώντας ανισοζυγία στο u. u v W A περιστροφή v w u X w X Y Z W Y Z ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-14

ΠαράδειγµαΑ -περιστροφής Με την εισαγωγή των στοιχείων 72, 26, 9, 2, 21, 25 σε ένα ΑVLδένδρο, δηµιουργείται ανισοζυγία στον κόµβο 26. Μετά από εφαρµογή Α περιστροφής έχουµε: 26 21 9 72 9 26 2 21 2 25 72 25 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-15

A-Περιστροφή Τα δένδρα Χ και W έχουν ύψος h. Μετά από κάποια εισαγωγή, το w έχει ύψος h+1, προκαλώντας ανισοζυγία στο u. u Α περιστροφή w X v u v w W X Y Z W Y Z ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-16

Παράδειγµα Α περιστροφής 4 4 2 6 2 7 1 3 5 14 1 3 6 14 7 15 5 13 15 13 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-17

ιαδικασίες Α και Α-περιστροφής Α περιστροφή του (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). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-18

Εφαρµογή περιστροφών Όπως έχουµε περιγράψει η διαδικασία εισαγωγής κόµβου σε AVL-δένδρο γίνεται ως εξής: 1. Εισάγουµε το στοιχείο στο κατάλληλο φύλλο όπως ακριβώς σε ένα δυαδικό δένδρο αναζήτησης. Καταγράφουµε τη διαδροµή που ακολουθήσαµε, δηλαδή αν r είναι η ρίζα και u είναι το φύλλο που προσθέσαµε τότε παίρνουµε διαδροµή µε µορφή: u = v,v,..., v = 1 2 k r 2. Ακολουθούµε τη διαδροµή προς τα πίσω και δίνουµε στα πεδία height των κόµβων τις νέες τους τιµές. 3. Αν σε κάποιο σηµείο αυτό προκαλέσει ανισοζυγία και µόλις συµβεί αυτό, (δηλ. αν έχει σαν αποτέλεσµα κάποιοι κόµβοι να έχουν παιδιά που το ύψος τους διαφέρει κατά τιµή >1), τότε εφαρµόζουµε στον κόµβο αυτό, έστω v i, την κατάλληλη περιστροφή. Επιλέγουµε την περιστροφή ως εξής: ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-19

Εφαρµογή περιστροφών (i) αν ο v i-1 είναι αριστερό παιδί του v i και ο v i-2 αριστερό παιδί του v i-1 τότε εφαρµόζουµε την A-περιστροφή, (ii) αν ο v i-1 είναι δεξιό παιδί του v i και ο v i-2 δεξιό παιδί του v i-1 τότε εφαρµόζουµε τη -περιστροφή, (iii) αν ο v i-1 είναι αριστερό παιδί του v i και ο v i-2 δεξιό παιδί του v i-1 τότε εφαρµόζουµε την A -περιστροφή, (iv) αν ο v i-1 είναι δεξιό παιδί του v i και ο v i-2 αριστερό παιδί του v i-1 τότε εφαρµόζουµε τη A-περιστροφή. 4. Ενηµερώνουµε τον πατέρα του v i για το ποιο είναι το παιδί του ως αποτέλεσµα της περιστροφής, ή, αν ο v i είναι η ρίζα του δένδρου, ενηµερώνουµε την καλούσα συνάρτηση για τη νέα ρίζα. Προσέξτε: 1. H περιστροφή εφαρµόζεται στον πιο χαµηλό κόµβο που παρουσιάζει ανισοζυγία. 2. Ένα AVL-δένδρο είναι Α! ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-20