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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AVL-trees C++ implementation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ουρά Προτεραιότητας (priority queue)

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (TREES) B C D E F G H I J K L M

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

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

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

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

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

ΔυαδικάΔΕΝΔΡΑΑναζήτησης

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

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

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

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

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

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

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

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

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

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

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

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

Μη AVL Δέντρα Εισαγωγή κόμβου 4, 6 : 4 12 :

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

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

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

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

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

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

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

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

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

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

Κεφάλαιο 6 Ουρές Προτεραιότητας

Κεφάλαιο 10 Ψηφιακά Λεξικά

Transcript:

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

Διαγραφή σε BST (Hibbart Deletion) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 public void deletemin() { if (isempty()) return; root = deletemin(root); } private Node deletemin(node x) { if (x.left == null) return x.right; x.left = deletemin(x.left); return x; } public void delete(key key) { root = delete(root, key); } private Node delete(node x, Key key) { if (x == null) return null; int cmp = key.compareto(x.key); if (cmp < 0) x.left = delete(x.left, key); else if (cmp > 0) x.right = delete(x.right, key); else { if (x.right == null) return x.left; if (x.left == null) return x.right; Node t = x; x = min(t.right); x.right = deletemin(t.right); x.left = t.left; } return x; } Code from: https://algs4.cs.princeton.edu/32bst/bst.java.html

Διαγραφή στα ΔΔΑ ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 3 Σενάριο: Συνεχής διαγραφή + εισαγωγή στοιχείων σε δυναμικό περιβάλλον Το ύψος του ΔΔΑ τείνει στο n

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

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

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

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

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

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

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

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

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

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 16 Αριστερή Περιστροφή Πριν την εισαγωγή: τα δένδρα 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

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

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

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

Διαδικασία Δ-περιστροφής Δεξιά περιστροφή του (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 Δομές Δεδομένων και Αλγόριθμοι 20

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

ΔA-Περιστροφή ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 7-25 Τα δένδρα Χ και 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

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

Διαδικασίες ΑΔ και ΔΑ-περιστροφής ΑΔ περιστροφή του (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 Δομές Δεδομένων και Αλγόριθμοι 27

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

Εφαρμογή περιστροφών 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 Δομές Δεδομένων και Αλγόριθμοι 29

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

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

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

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