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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AVL-trees C++ implementation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

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

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

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

Συγκρίσιμα Αντικείμενα (comparable)

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

AVL δέντρα. h L h R. G.M. Adelson_Velkii και E.M. Landis 1962

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

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

Δομές δεδομένων (2) Αλγόριθμοι

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

Transcript:

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

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

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

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

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

AVL Δένδρα 2. Δεύτερη προσπάθεια:ένα δυαδικό δένδρο είναι AVL-δένδρο (Adelson-Velskiiand Landis) ανγια κάθε κόμβο του u τα ύψη των παιδιών του u διαφέρουν το πολύκατά 1. (υποθέτουμε το ύψος του κενού δένδρου= 1) Θα δούμε ότι: το ύψος ενός AVL-δένδρου με n κόμβους είναι O(logn) διαδικασίες εισαγωγής και εξαγωγής κόμβων μπορούν να διατυπωθούν έτσι ώστε η AVL-συνθήκη να διατηρείται. Ένα πλήρες δένδρο είναι και AVL-δένδρο. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 6

Παραδείγματα AVL δένδρων ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 7

Το ύψος ενός 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 κόμβους είναι της τάξης Ο(logn) ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 8

Ένα μικρότερο AVL-δένδρο ύψους 5 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 9

Υλοποίηση AVL δέντρων Η παράσταση ενός κόμβου AVL-δένδρου είναι παρόμοια με αυτή ενός κόμβου ΔΔA, με την προσθήκη ενός επιπλέον πεδίου, που καταγράφει το ύψος του δένδρου που ριζώνει στον συγκεκριμένο κόμβο. Δηλαδή, ένας κόμβος μπορεί να υλοποιηθεί ως μια εγγραφή AVLnode με τέσσερα πεδία. val:το κλειδί κόμβου height(int):το ύψος του κόμβου left(pointer):δείχνει το αριστερό υπόδενδρο που ριζώνει στον συγκεκριμένο κόμβο typedef struct node { int val; int height; struct node *left; struct node *right; } AVLNODE; right (pointer):δείχνει το δεξί υπόδενδρο που ριζώνει στον συγκεκριμένο κόμβο Το πεδίο heightχρησιμοποιείται για τη διακρίβωση ανισοζυγίας(με σύγκριση των ανάλογων πεδίων των παιδιών κάθε κόμβου). ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 10

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

Παράδειγμα Εισαγωγή 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 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 12

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

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

Παράδειγμα Α-περιστροφής 50 42 72 5 46 61 99 43 58 65 50 51 42 61 5 46 58 72 43 51 65 99 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 15

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

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

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

Παράδειγμα ΑΔ-περιστροφής Με την εισαγωγή των στοιχείων 72, 26, 9, 21, 25 σε ένα AVL δένδρο, δημιουργείται ανισοζυγία στον κόμβο 26. Μετά από εφαρμογή ΑΔ περιστροφή έχουμε: 26 26 Α 21 9 72 21 72 9 26 2 21 9 25 2 25 72 25 2 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 19

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

Παράδειγμα ΔΑ-περιστροφής Με την εισαγωγή του στοιχείου 13 σε ένα AVL δένδρο, δημιουργείται ανισοζυγία στον κόμβο 6. Μετά από εφαρμογή ΔΑ περιστροφή έχουμε: 4 4 2 6 2 7 1 3 5 14 1 3 6 14 7 15 5 13 15 13 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 21

Διαδικασίες ΑΔ και ΔΑ-περιστροφής ΑΔ περιστροφή του (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). ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 22

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

Εφαρμογή περιστροφών 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. Ενημερώνουμε τον πατέρα του vi για το ποιο είναι το παιδί του ως αποτέλεσμα της περιστροφής, ή, αν ο vi είναι η ρίζα του δένδρου, ενημερώνουμε την καλούσα συνάρτηση για τη νέα ρίζα. ΠΡΟΣΟΧΗ: H περιστροφή εφαρμόζεται στον πιο χαμηλό κόμβο που παρουσιάζει ανισοζυγία. Ένα AVL-δένδρο είναι ΔΔΑ! ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 24