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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AVL-trees C++ implementation

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

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

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

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

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

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

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

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

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

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

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

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

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

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

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

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

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

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

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

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

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

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

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

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

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

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

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

Μάθημα 22: Δυαδικά δέντρα (Binary Trees)

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

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

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

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

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

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

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

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

Δομές Δεδομένων (Data Structures)

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

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

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

Δημιουργία Δυαδικών Δέντρων Αναζήτησης

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

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

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

Δομές Δεδομένων Ενότητα 5

Δοµές Δεδοµένων. 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης. Ε. Μαρκάκης

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

Δέντρα (Trees) - Ιεραρχική Δομή

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

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

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing)

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

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

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Transcript:

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ισοζυγισμένα Δέντρα Υλοποίηση AVL δέντρων Εισαγωγή Κόμβων και Περιστροφές σε AVL δέντρα ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1

Εισαγωγή Στην προηγούμενη διάλεξη μιλήσαμε για Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ). Αυτά έχουν ύψος ίσο με log 2 n (στην καλύτερη περίπτωση) και n 1 στην χειρότερη περίπτωση. Άρα για να βρούμε αν υπάρχει ένα στοιχείο στο δένδρο (δηλαδή για να κάνουμε μια αναζήτηση) χρειαζόμαστε να περάσουμε από log 2 n (καλύτερη περίπτωση) ή n στοιχεία (χειρότερη περίπτωση). ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2

Ιδέα Λύσης Βασικά θέλουμε να περιορίσουμε το ύψος του δένδρου όσο το δυνατό περισσότερο. Αυτό μπορεί να γίνει με: 1. Σωστή αξιοποίηση όλων των παιδιών. Θέλουμε να αποφύγουμε αυτό το δένδρο Το τέλειο δένδρο είναι η ιδανική περίπτωση! 2. Να αυξήσουμε τον αριθμό των παιδιών σε κάθε κόμβο χωρίς να αυξηθεί πάρα πολύ. Γιατί; Διότι θα καταλήξουμε σε ένα πίνακα στο τέλος οπότε η αναζήτηση κάποιου στοιχείου θα πάρει O(n) χρόνο ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 3

Ισοζυγισμένα Δένδρα Ένα τέλειο δένδρο προϋποθέτει ότι υπάρχει ο κατάλληλος αριθμός κόμβων. π.χ. ένα τέλειο δυαδικό δένδρο πρέπει να έχει 1 ή 2 ή 4 ή 8. κόμβους Για αυτό περιοριζόμαστε στο να κρατάμε το δένδρο ισοζυγισμένο αντί τέλειο. Ισοζυγισμένο Δένδρο (Balanced Tree) Ένα δένδρο στο οποίο όλα τα φύλλα έχουν το ίδιο βάθος. Μη γεμάτο, Ισοζυγισμένο Γεμάτο, Μη Ισοζυγισμένο Γεμάτο, Ισοζυγισμένο, Τέλειο ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4

AVL Δένδρα Είναι δυνατό να οργανώσουμε ένα δυαδικό δένδρο αναζήτησης έτσι ώστε το ύψος του να είναι το μικρότερο δυνατό; (τάξεως Ο(lοg 2 n)) Iδέα: για να έχουμε μικρό ύψος, αν u είναι ένας κόμβος του δένδρου τότε και τα δύο του υπόδενδρα έχουν περίπου τον ίδιο αριθμό κόμβων. 1. Πρώτη προσπάθεια: για κάθε κόμβο και τα δυο του υπόδενδρα έχουν το ίδιο ύψος τέλεια δένδρα δένδρα με αριθμό κόμβων 2h+1 1. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5

AVL Δένδρα 2. Δεύτερη προσπάθεια: Ένα δυαδικό δένδρο είναι AVL δένδρο (Adelson Velskii and Landis) αν για κάθε κόμβο του u τα ύψη των παιδιών του u διαφέρουν το πολύ κατά 1. (υποθέτουμε το ύψος του κενού δένδρου= 1) Θα δούμε ότι: το ύψος ενός AVL δένδρου με n κόμβους είναι O(log n) διαδικασίες εισαγωγής και εξαγωγής κόμβων μπορούν να διατυπωθούν έτσι ώστε η AVL συνθήκη να διατηρείται. Ένα πλήρες δένδρο είναι και AVL δένδρο. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 6

Παραδείγματα AVL δένδρων... ή όχι; ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 7

Παραδείγματα AVL δένδρων... ή όχι; ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 8

Το ύψος ενός 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) Θ(ch). Eπομένως: Θεώρημα: Το ύψος ενός AVL δένδρου με n κόμβους είναι της τάξης Ο(log n) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 9

Ένα μικρότερο AVL δένδρο ύψους 5 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 10

Υλοποίηση AVL δέντρων Η παράσταση ενός κόμβου AVL δένδρου είναι παρόμοια με αυτή ενός κόμβου ΔΔA, με την προσθήκη ενός επιπλέον πεδίου, που καταγράφει το ύψος του δένδρου που ριζώνει στον συγκεκριμένο κόμβο. Δηλαδή, ένας κόμβος μπορεί να υλοποιηθεί ως μια εγγραφή AVLNode με τέσσερα πεδία. key: το κλειδί κόμβου height (int): το ύψος του κόμβου left (pointer): δείχνει το αριστερό υπόδενδρο που ριζώνει στον συγκεκριμένο κόμβο right (pointer): δείχνει το δεξί υπόδενδρο που ριζώνει στον συγκεκριμένο κόμβο Το πεδίο height χρησιμοποιείται για τη διακρίβωση ανισοζυγίας (με σύγκριση των ανάλογων πεδίων των παιδιών κάθε κόμβου). ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 11

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

Παράδειγμα Εισαγωγή 72,26,9 στο κενό AVL δένδρο με αυτή τη σειρά: NULL 72 72 26 72 9 72 26 height(left) =2 26 height(right) =0 9 height(left)-height(right)>1 26 9 72 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 13

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

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

Παράδειγμα Α περιστροφής 50 42 72 Ανισοζυγία 5 46 61 99 43 58 65 50 51 42 61 5 46 58 72 43 51 65 99 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 16

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

Διαδικασία Δ περιστροφής Δεξιά περιστροφή του (A,B) σημαίνει 1. Α.right= C.left 2. C.left = Α 3. Α.height = B.height + 1 4. C.height = B.height + 2 Πριν την περιστροφή ο Α ήταν ο πατέρας του C, και μετά, ο C είναι ο πατέρας του Α. Το δένδρο παραμένει δυαδικό δένδρο αναζήτησης. Μετά την περιστροφή το δένδρο είναι AVL: C.height = h + 1 = ύψος του T. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 18

ΑΔ Περιστροφή Τα δένδρα Χ και W έχουν ύψος h. Μετά από κάποια εισαγωγή, το w έχει ύψος h+1, προκαλώντας ανισοζυγία στο u. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 19

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

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

ΔΑ Περιστροφή Τα δένδρα Χ και W έχουν ύψος h. Μετά από κάποια εισαγωγή, το w έχει ύψος h+1, προκαλώντας ανισοζυγία στο u. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 22

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

Παράδειγμα ΔΑ περιστροφής 4 2 ΔΑ ΠΕΡΙΣΤΡΟΦΗ 6 ΑΝΙΣΟΖΥΓΙΑ 1 3 5 14 7 15 13 ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 7 24

Διαδικασίες ΑΔ και ΔΑ περιστροφής ΑΔ περιστροφή του (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 =. Οι περιστροφές δεν παραβιάζουν τη ΔΔΑ συνθήκη. Το δένδρο που δημιουργείται είναι AVL δένδρο (οι κόμβοι v και u έχουν ύψος h+1). ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 25

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

Εφαρμογή περιστροφών i. αν ο v i 1 είναι αριστερό παιδί του v i και ο v i 2 αριστερό παιδί του v i 1 τότε εφαρμόζουμε την A περιστροφή, ii. iii. iv. αν ο 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 περιστροφή. 4. Ενημερώνουμε τον πατέρα του vi για το ποιο είναι το παιδί του ως αποτέλεσμα της περιστροφής, ή, αν ο vi είναι η ρίζα του δένδρου, ενημερώνουμε την καλούσα συνάρτηση για τη νέα ρίζα. ΠΡΟΣΟΧΗ: H περιστροφή εφαρμόζεται στον πιο χαμηλό κόμβο που παρουσιάζει ανισοζυγία. Ένα AVL δένδρο είναι ΔΔΑ! ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 27

AVL Δέντρα: Ασκήσεις Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το 1; 26 9 72 2 21 1 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 28

AVL Δέντρα: Ασκήσεις Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το 3; 26 9 72 2 21 3 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 29

AVL Δέντρα: Ασκήσεις Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το 95; 26 9 72 60 90 95 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 30

AVL Δέντρα: Ασκήσεις Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το 71; 26 9 72 60 90 71 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 31