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

Σχετικά έγγραφα
AVL δέντρα. h L h R. G.M. Adelson_Velkii και E.M. Landis 1962

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

ρίζα E F G H I J επίπεδο 1

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

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

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

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

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

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 6: ΑΤΔ Δένδρο, ΑΤΔ Δυαδικό Δένδρο Αναζήτησης (ΔΔΑ)

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

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

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

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

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

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

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

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

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

AVL-trees C++ implementation

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

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

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

2 η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα ????

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

Δομές Δεδομένων. Ενότητα 9: Τα ΔΔΑ ως Αναδρομικές Δομές Δεδομένων-Εφαρμογή Δυαδικών Δέντρων: Κωδικοί Huffman. Καθηγήτρια Μαρία Σατρατζέμη

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

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

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

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

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

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

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

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

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

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

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

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

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

Αναδρομικοί Αλγόριθμοι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

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

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

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

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

υαδικό δέντρο έντρα (Trees) -Ιεραρχική οµή

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

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

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

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

Ηλεκτρονικοί Υπολογιστές

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

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

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

Δοµές Δεδοµένων. 17η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

Αλγόριθμοι και πολυπλοκότητα Μελανέρυθρα δεντρα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

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

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

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

Δέντρα Απόφασης (Decision(

ΕΠΛ232: Εργαστήριο 2

ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ. ΗΥ240 - Παναγιώτα Φατούρου 1

Transcript:

AVL δέντρα AVL Δέντρα L R G.M. AdelsonVelkii και E.M. Landis 192 Μη AVL Δέντρα Εισαγωγή κόμβου, : : Αριστερή στροφή 1

8, 1 : 8 1 7 : 7 8 1 Δεξιά στροφή 8 7 Αριστερή στροφή 1 8 7 1 Περιπτώσεις LL : ο νέος κόμβος Υ εισάγεται στο αριστερό υποδέντρο του αριστερού υποδέντρου του Α. LR : ο νέος κόμβος Υ εισάγεται στο δεξί υποδέντρο του αριστερού υποδέντρου του Α. RR : ο νέος κόμβος Υ εισάγεται στο δεξί υποδέντρο του δεξιού υποδέντρου του Α. RL : ο νέος κόμβος Υ εισάγεται στο αριστερό υποδέντρο του δεξιού υποδέντρου του Α. Περίπτωση 1 (RR) : Δεξιά Υψηλό. Τ 2 Τ 3 Αριστερή στροφή x. osoinos 1 2 +1 3.. Τ 2. osoinos x Τ 3 +1 Συνολικό ύψος = +3 νέος Συνολικό ύψος = +2 2

tyedef enum{true, FALSE; tyedef enum{ay, IY, DY aagonisozygisis; tyedef stuct tyoskomvou *tyosdeikti; tyedef stuct tyoskomvou{ tyosstoixeiou dedomena; tyosdeikti aaidi, daidi; aagonisozygisis i; tyoskomvou; void aisteieistofi (tyosdeikti *);{ /*Ο δείχνει τη ρίζα του υποδέντρου που περιστρέφεται*/ tyosdeikti osoinos; if (kenodento(*)) /*Είναι αδύνατη η περιστροφή*/ intf( Κενό δέντρο ) /*ενός κενού δέντρου*/ else if (kenodento((*)->daidi)) /*Είναι αδύνατο να γίνει ρίζα ένα κενό υποδέντρο*/ intf ( Κενό δεξί υποδέντρο ) else{ osoinos = (*)->daidi; (*)->daidi = osoinos->aaidi; osoinos->aaidi =* ; * = osoinos; /*aisteieistofi*/ Περίπτωση 2 (RL):Αριστερά Υψηλό 2 w w 1 x - 1 ή Τ 2 νέος ή Τ - 1 3 Τ ή νέος Ενα από τα Τ 2 ή Τ 3 έχει ύψος..συνολικό ύψος = +3 Τ 2.Συνολικό ύψος = +3-1 Τ 3 Τ 3

w x παλιό w νέο νέο x Τ 2 Τ 3 Τ.Συνολικό ύψος = +2 Αποκατάσταση ισοζύγισης (διπλή RLπεριστροφή). Οι αριθμοί στους κύκλους δηλώνουν την προτεραιότητα των ενεργειών. H αποκατάσταση της ισοζύγισης με τις RR και RL περιστροφές υλοποιείται με το παρακάτω υποπρόγραμμα. void dexivaos(tyosdeikti *iza,boolean *ysiloteo){ tyosdeikti x; //δείκτης στο δεξί υποδέντρο της ρίζας tyosdeikti w; x = (*iza)->daidi; switc (x->i){ case DY: //απλή RR περιστροφή (*iza)->i = IY; x->i = IY; aisteieistofi(iza); *ysiloteo = FALSE; case IY: /*Δεν συμβαίνει η περίπτωση αυτή*/ intf ( Λάθος ); case AY:/*διπλή RL περιστροφή*/ w = x->aaidi; switc (w->i){ case IY: (*iza)->i=iy; x->i= IY; case AY: (*iza)->i=iy; x->i= DY; case DY: (*iza)->i=ay; x->i= IY; w->i=iy; dexiaeistofi(&x); /*o x δείχνει τώρα τον w*/ (*iza)->daidi = x; aisteieistofi(iza); ysiloteo = FALSE; // of switc /*dexivaos*/

Tο υποπρόγραμμα εισαγωγής ενός κόμβου σε ένα AVL δέντρο είναι το ακόλουθο : void avleisagogi (tyosdeikti *iza, tyosdeikti osoinos, tyosdeikti stoixeio, boolean *ysiloteo) { if (kenodento(*iza)){ *iza = osoinos; (*iza)->aaidi = NULL; (*iza)->daidi = NULL; (*iza)->i = IY; *ysiloteo = TRUE; else if (osoinos->dedomena==(*iza)->dedomena) intf( Ο κόμβος υπάρχει ήδη στο ΔΔΑ ); else if (osoinos->dedomena<(*iza)->dedomena){ /*εισαγωγή στο αριστερό υποδέντρο*/ avleisagogi(&((*iza)->aaidi)), osoinos, stoixeio, ysiloteo); if (*ysiloteo) switc ((*iza)->i){ case AY: aisteovaos(iza, ysiloteo); case IY: (*iza)->i=ay; *ysiloteo=true; case DY: (*iza)->i=iy; *ysiloteo=false; else{/*εισαγωγή στο δεξί υποδέντρο*/ avleisagogi (&((*iza)->daidi), osoinos, stoixeio, ysiloteo); if (*ysiloteo) switc ((*iza)->i){ case AY: (*iza)->i=iy; *ysiloteo=false; case IY: (*iza)->i=dy; *ysiloteo=true; case DY: dexivaos(iza, ysiloteo); /*avleisagogi*/ 5

Διαγραφή Αμετάβλητο ύψος Αμετάβλητο ύψος Τ1 Τ1-1 Τ1 Περίπτωση 1-1 Τ1 Τ3 Τ3 Ελαττωμένο ύψος Περίπτωση 3a Τ1 Τ1 Περίπτωση 2-1 Τ1-1 -1 Τ1 Τ3 Τ3 Ελαττωμένο ύψος -1 Τ1 Αμετάβλητο ύψος -1-1 -1 ή Τ3-1 -1-2 ή Τ3 Τ Τ1 Τ -2 Περίπτωση 3b Περίπτωση 3c Σχήμα 8.22 Διάφορες περιπτώσεις διαγραφής κόμβου από ένα AVL δέντρο.

Το ύψος ενός AVL δέντρου -1 ή F -2 F l Επομένως οι αλγόριθμοι για την επεξεργασία των AVL δέντρων απαιτούν το πολύ % περισσότερο χρόνο από το βέλτιστο. Στην πράξη όμως έχει βρεθεί ότι ο χρόνος αυτός είναι πολύ λιγότερος. 7