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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v.

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

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

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

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

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

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

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

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

οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ

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

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

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

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

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

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

ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat

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

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

ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ. ΗΥ240 - Παναγιώτα Φατούρου 1

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

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

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

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

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

Εργαστήριο 2 Δυναμικές Δομές Δεδομένων Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 3: Δένδρα

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

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

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

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

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

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

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

5 ΔΕΝΤΡΑ (Trees) Σχήµα 5.1 : ενδροειδής αναπαράσταση αρχείων στα Windows. έντρα. \ {root directory} Accessories. Program Files.

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

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

AVL-trees C++ implementation

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

Γέφυρες σε Δίκτυα. Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος. Γέφυρα του (με αφετηρία τον ) :

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

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

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

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

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

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

ΗΥ360 Αρχεία και Βάσεις εδοµένων

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

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

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

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

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

υαδικό έντρο Αναζήτησης (BSTree)

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

Transcript:

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

Βαθμός, βάθος και ύψος ενός δένδρου Βαθμός (degree) ενός κόμβου είναι ο αριθμός των παιδιών του. Βαθμός ενός δένδρου είναι ο μέγιστος από τους βαθμούς των κόμβων του. Βάθος ενός κόμβου (Node Depth) (ή επίπεδο Level) => αριθμός προγόνων + 1. Βάθος ενός δένδρου ονομάζουμε τον μέγιστο από τα βάθη των κόμβων. Ύψος ενός κόμβου : το μήκος του μονοπατιού από το βαθύτερο κόμβο (στο ίδιο υπό-δένδρο) προς τον κόμβο. π.χ. το ύψος οποιουδήποτε φύλλου είναι 0. Ύψος ενός δένδρου : το ύψος της ρίζας του δένδρου. ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-2

Ποιος είναι ο βαθμός του κόμβου 99; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-3

Ποιος είναι ο βαθμός του κόμβου 61; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-4

Ποιος είναι ο βαθμός του δέντρου; 50 42 72 5 46 61 99 43 58 63 65 51 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-5

Ποιο είναι το ύψος του κόμβου 51; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-6

Ποιο είναι το ύψος του κόμβου 58; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-7

Ποιο είναι το ύψος του κόμβου 72; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-8

Ποιο είναι το ύψος του δέντρου; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-9

Ποιο είναι το βάθος του κόμβου 50; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-10

Ποιο είναι το βάθος του κόμβου 46; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-11

Ποιο είναι το βάθος του κόμβου 51; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-12

Διάσχιση Δένδρων Αν θέλουμε να επισκεφθούμε όλους τους κόμβους ενός δένδρου, μπορούμε να χρησιμοποιήσουμε ένα από τους πιο κάτω τρόπους, οι οποίοι διαφέρουν στη σειρά με την οποία εξετάζουν τους κόμβους. 1. Προθεματική Διάσχιση: (Preorder Traversal) επισκεπτόμαστε (εκτυπώνουμε) πρώτα τη ρίζα και ύστερα τα παιδιά της. Αναδρομικά η πράξη ορίζεται ως εξής: Print_Preorder(treenode u) Print u; foreach child v of u Print_Preorder(v) 2. Μεταθεματική Διάσχιση: (Postorder Traversal) επισκεπτόμαστε (εκτυπώνουμε) πρώτα τα παιδιά και ύστερα τη ρίζα του δένδρου. Αναδρομικά η πράξη ορίζεται ως εξής: Print_Postorder(treenode u) foreach child v of u Print_Postorder(v) Print u; ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-13

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

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

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

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

Δυαδικά Δένδρα Ένα δένδρο είναι δυαδικό αν όλοι οι κόμβοι του έχουν βαθμό 2. Ορισμός: Δυαδικό δένδρο λέγεται ένα δένδρο το οποίο : είτε είναι κενό, ή αποτελείται από μια ρίζα και δύο δυαδικά υπόδενδρα. Αναφερόμαστε στα δύο υπόδενδρα ως το αριστερό και το δεξιό υπόδενδρο. Το ύψος ενός δυαδικού δένδρου με n κόμβους μπορεί να είναι το 2 πολύ : n-1 (συνδεδεμένη λίστα) και το λιγότερο lg n. Ένα δυαδικό δένδρο είναι γεμάτο (full), αν κάθε εσωτερικός του κόμβος έχει δύο απογόνους. Ένα δυαδικό δένδρο είναι τέλειο (perfect), αν είναι γεμάτο και όλοι του οι κόμβοι που βρίσκονται στο ίδιο επίπεδο έχουν το ίδιο βάθος. 6 6 1 3 6 floor(lg 4)= 2 11 h=2 2 1 3 11 5 8 13 7 9 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-18 FULL 2 1 3 11 5 8 13 PERFECT

Δυαδικά Δένδρα Αναζήτησης ΔΔΑ (Binary Search Trees) Το πιο σημαντικό πλεονέκτημα της χρήσης δυαδικών δένδρων η αποδοτική αναζήτηση σε ένα σύνολο στοιχείων Υποθέτουμε την ύπαρξη μιας σχέσης στο σύνολο των στοιχείων που επεξεργαζόμαστε, έστω τη σχέση < πάνω στο σύνολο των ακεραίων. Ένα δυαδικό δένδρο αναζήτησης (ΔΔΑ) είναι ένα δυαδικό δένδρο κάθε κόμβος u του οποίου ικανοποιεί τα εξής: 1. τα κλειδιά του αριστερού υποδένδρου του u είναι μικρότερα από το κλειδί του u 2. τα κλειδιά του δεξιού υποδένδρου του u είναι μεγαλύτερα (ή ίσο) από το κλειδί του u. ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-19

Διαδικασία Εύρεσης Στοιχείου FindNode() Απλή αναδρομική στρατηγική: συγκρίνουμε το στοιχείο που μας ενδιαφέρει α με το στοιχείο της ρίζας του δένδρου β (αν υπάρχει) και 1. αν α=β, σταματούμε, 2. αν α<β, προχωρούμε στο αριστερό υπόδενδρο, 3. αν α>β προχωρούμε στο δεξιό υπόδενδρο. NODE *FindNode(NODE *root, int val) { } if (root == NULL) return NULL; // το στοιχείο δεν βρέθηκε 2 else if (root->val == val) // το στοιχείο βρέθηκε! return root; else { // ακόμα δεν βρέθηκε το στοιχείο if (val < root->val) return FindNode(root->left, val); else return FindNode(root->right, val); } Χείριστη περίπτωση Ο(n) (εάν έχουμε λίστα) 1 3 6 11 5 8 13 7 9 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-20

Διαδικασία Εισαγωγής Κόμβου InsertNode() NODE *InsertNode(NODE *root, int val){ if (root == NULL) { // εισαγωγή κόμβου root = (NODE *) malloc(sizeof(node)); if (root==null) { printf("out of Memory!"); exit(1); } } else { } root->val = val; root->left = NULL; root->right = NULL; if (val < root->val) // εισαγωγή αριστερά root->left = InsertNode(root->left, val); else // εισαγωγή δεξιά root->right = InsertNode(root->right, val); root 1 2 1 3 6 11 5 8 13 7 9 } return root; ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-21

Σύγκριση Δυαδικών Δένδρων Να γραφεί μια συνάρτηση η οποία να επιστρέφει 1 αν δυο δυαδικά δένδρα είναι τα ίδια και 0 στην αντίθετη περίπτωση int sametree(node *a, NODE *b) { // και τα δυο δένδρα είναι κενά => άρα επιστρέφουμε TRUE if (a==null && b==null) return 1; // και τα δυο δένδρα δεν είναι κενά συγκρίνουμε τις ρίζες τους else if (a!=null && b!=null) { return( (a->data == b->data) 6 6 && 3 11 3 11 sametree(a->left, b->left) && 5 8 13 8 sametree(a->right, b->right) ); 7 9 7 9 } 1 1 5 13 } // το ένα εκ των δυο υπό-δένδρων είναι κενό => επιστρέφουμε FALSE else return 0; ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-22

Δυαδικά Δέντρα Ποιος είναι ο ύψος ενός δυαδικού δέντρου όταν εισάξουμε τα στοιχεία 1,2,3,4,5,6,7 με αυτή τη σειρά; Ποιος θα είναι ο χρόνος αναζήτησης χείριστης περίπτωσης στο πιο πάνω δέντρο σε σχέση με το n; ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-23

Δυαδικά Δέντρα Ποιος είναι ο ύψος ενός δυαδικού δέντρου όταν εισάξουμε τα στοιχεία 1,2,3,4,5,6,7 με αυτή τη σειρά; 6 Ποιος θα είναι ο χρόνος αναζήτησης χείριστης περίπτωσης στο πιο πάνω δέντρο σε σχέση με το n; Ο(n) 1 2 3 4 5 7 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-24 6

Δυαδικά Δέντρα Με ποια σειρά πρέπει να εισάξουμε τα στοιχεία 1,2,3,4,5,6,7 ώστε να πάρουμε το πιο κάτω δέντρο; 4 2 6 1 3 5 7 Τι είναι το πιο πάνω δέντρο; ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-25

Δυαδικά Δέντρα Με ποια σειρά πρέπει να εισάξουμε τα στοιχεία 1,2,3,4,5,6,7 ώστε να πάρουμε το πιο κάτω δέντρο; 4,2,6,1,3,5,7 4 2 6 1 3 5 7 Τι είναι το πιο πάνω δέντρο; Τέλειο ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-26

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

2-3 Δένδρα Όλα τα 2-3 δένδρα είναι ισοζυγισμένα. Δηλαδή όλα τα φύλλα έχουν την ίδια απόσταση από την ρίζα ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-28

Εισαγωγή κόμβου σε ένα 2-3 δένδρο Η εισαγωγή κάποιου κλειδιού k σε ένα 2-3 Δένδρο μπορεί να χωριστεί στις ακόλουθες τρεις λογικές φάσεις 1. Καθοδική Φάση (Downward Phase) Σε αυτή την φάση διανύουμε αναδρομικά το δένδρο μέχρι να φθάσουμε σε τερματικό κόμβο (δηλαδή κάποιο φύλλο). Δηλαδή: αν k<u.key1 τότε προχώρα στον κόμβο u.left αν k>u.key2 τότε προχώρα στον κόμβο u.right αν u.key1 < k < u.key2 τότε προχώρα στον κόμβο u.center. 2. Τερματική Φάση (Terminal Phase) Όταν φτάσουμε σε φύλλο τότε προσπαθούμε να κάνουμε την εισαγωγή Αν δεν έχει αρκετό χώρο τότε διασπάται το φύλλο και «ανασηκώνουμε» (kick up) αναδρομικά το μεσαίο στοιχείο στον πατέρα. 3. Ανοδική Φάση (Upward Phase) Σε αυτή την φάση κάνουμε την εισαγωγή αναδρομικά στον γονέα αν δεν πετύχαμε εισαγωγή στην τερματική φάση. ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-29

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-30

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 65 65 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-31

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 76 65 76 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-32

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 71 NULL προαγωγή 71 71 65 76 65 76 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-33

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 79 71 65 76 79 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-34

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 82 71 79 προαγωγή 65 76 82 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-35

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 82 71 79 65 76 82 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-36

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 73 71 79 65 73 76 82 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-37

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 84 71 79 65 73 76 82 84 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-38

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 72 71 79 65 προαγωγή 73 82 84 72 76 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-39

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο NULL Εισαγωγή του 72 προαγωγή 73 71 79 65 72 76 82 84 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-40

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 72 73 71 79 65 72 76 82 84 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-41

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 77 73 71 79 65 72 76 77 82 84 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-42

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 83 73 71 79 προαγωγή 65 72 76 77 83 82 84 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-43

2-3 Δέντρα Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο Εισαγωγή του 83 73 71 79 83 65 72 76 77 82 84 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε4-44