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

Σχετικά έγγραφα
Κύρια σηµεία για µελέτη. έντρα. Ορολογία δέντρων. Τι είναι δέντρο

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

Διοικητική Λογιστική

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

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

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

Εισαγωγή στους Αλγορίθμους

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

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

Βάσεις Περιβαλλοντικών Δεδομένων

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

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Πληροφορική ΙΙ Θεματική Ενότητα 5

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

Διοικητική Λογιστική

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Ψηφιακή Επεξεργασία Εικόνων

Μάρκετινγκ Αγροτικών Προϊόντων

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

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

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

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

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Οντοκεντρικός Προγραμματισμός

Τεχνικό Σχέδιο - CAD

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός

Δομημένος Προγραμματισμός

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

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

Εισαγωγή στην Πληροφορική

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

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

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

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

4 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

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

Τεχνικό Σχέδιο - CAD

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Αριθμητική Ανάλυση. Ενότητα 1: Εισαγωγή Βασικές Έννοιες. Φραγκίσκος Κουτελιέρης Πολυτεχνική Σχολή Τμήμα Χημικών Μηχανικών

Εισαγωγή στην Πληροφορική

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Εισαγωγή στους Υπολογιστές

Διδακτική Πληροφορικής

Εισαγωγή στην Πληροφορική

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Βάσεις Περιβαλλοντικών Δεδομένων

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

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

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

Ενδεικτικές λύσεις ασκήσεων διαγραμμάτων περίπτωσης χρήσης (1ο Μέρος)

Οικονομική Γεωργικών Εκμεταλλεύσεων

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Αγροτικός Τουρισμός. Ενότητα 9 η : Εκπαιδευτικές τεχνικές στον τουρισμό. Όλγα Ιακωβίδου Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

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

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

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

Εννοιες και Παράγοντες της Ψηφιακής Επεξεργασίας Εικόνας

Στατιστική. 6 ο Μάθημα: Διαστήματα Εμπιστοσύνης και Έλεγχοι Υποθέσεων. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Μάρκετινγκ Αγροτικών Προϊόντων

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Διδακτική Πληροφορικής

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 2

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διδακτική Πληροφορικής

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Μηχανολογικό Σχέδιο Ι

Μάρκετινγκ Αγροτικών Προϊόντων

Οντοκεντρικός Προγραμματισμός

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Διοικητική Λογιστική

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Διδακτική Πληροφορικής

Transcript:

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

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Κρήτης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2

Σημείωμα αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση, Όχι Παράγωγο Έργο 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-nd/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.. 3

Δέντρα Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery Δέντρα 4

Κύρια σημεία για μελέτη Ο ΑΤΔ του δέντρου ( 2.3.1) Preorder και postorder διασχίσεις ( 2.3.2) Ο ΑΤΔ του δυαδικού δέντρου( 2.3.3) Inorder διάσχιση ( 2.3.3) Η διάσχιση του Euler ( 2.3.3) Template method pattern Δομές δεδομένων για δέντρα ( 2.3.4) Εφαρμογές σε Java (http://jdsl.org) Δέντρα 5

What is a Tree Στην επιστήμη υπολογιστών, το δέντρο είναι ένα αφηρημένο μοντέλο ιεραρχικής δόμησης. Ένα δέντρο αποτελείται από κόμβους με σχέσεις πατέρα παιδιού. Εφαρμογές σε: Χάρτες οργανισμών Συστήματα αρχείων Προγραμματιστικά περιβάλλοντα US Sales International Computers R Us Manufacturing Laptops Europe Asia Canada Desktops R&D Δέντρα 6

Tree Terminology Κόμβος Ρίζα: ένας κόμβος χωρίς πατέρα (A) Εσωτερικός κόμβος: Ένας κόμβος με τουλάχιστον ένα παιδί (A, B, C, F) Εξωτερικός κόμβος(ή φύλλο ): ένας κόμβος χωρίς παιδιά (E, I, J, K, G, H, D) Πρόγονοι ενός κόμβου: κόμβος πατέρας,παππούς, προπάππος κλπ. Βάθος κόμβου: ο αριθμός των κόμβων προγόνων. Ύψος δέντρου: το μέγιστο βάθος οποιουδήποτε κόμβου του δέντρου.(3) υποδέντρο Απόγονος κόμβου: παιδί, εγγόνι. Δέντρα 7 E Υποδέντρο: ένα δέντρο αποτελούμενο από έναν κόμβο και τους προγόνους του. B F I J K A G C H D

Ο ΑΤΔ του δέντρου Χρησιμοποιούμε θέσεις γι α να γενικεύσουμε τους κόμβους. Γενικές μέθοδοι: integer size() boolean isempty() objectiterator elements() positioniterator positions() Συμπληρωματικές μέθοδοι: position root() Μέθοδοι ερωτημάτων: boolean isinternal(p) boolean isexternal(p) boolean isroot(p) Μέθοδοι αναβάθμισης: swapelements(p, q) object replaceelement(p, o) Πρόσθετοι μέθοδοι αναβάθμισης μπορεί να ορίζονται από τις δομές δεδομένων που υλοποιούν τον ΑΤΔ του δέντρου. position parent(p) positioniterator children(p) Δέντρα 8

Preorder διάσχιση Μια διάσχιση επισκέφτεται τους κόμβους του δέντρου με συστηματικό τρόπο. Σε μια preorder διάσχιση, η επίσκεψη σε έναν κόμβο γίνεται πριν από την επίσκεψη στους απογόνους του. 1 Εφαρμογή: Εκτύπωση δομημένου εγγράφου. 3 2 Make Money Fast! 1. Motivations 2. Methods References 4 1.1 Greed 1.2 Avidity 2.1 Stock Fraud Algorithm preorder(v) visit(v) for each child w of v preorder (w) 5 6 7 8 2.2 Ponzi Scheme 2.3 Bank Robbery Δέντρα 9 9

Postorder διάσχιση Σε μια postorder διάσχιση, η επίσκεψη σε έναν κόμβο γίνεται μετά από την επίσκεψη στους απογόνους του. Εφαρμογή: υπολογισμός του χώρου που χρησιμοποιείται από αρχεία σε έναν κατάλογο και τους υποκαταλόγους του. 9 1 h1c.doc 3K 3 homeworks/ h1nc.doc 2K DDR.java 10K cs16/ Algorithm postorder(v) for each child w of v postorder (w) visit(v) programs/ 2 4 5 6 7 Stocks.java 25K Robot.java 20K todo.txt 1K Δέντρα 10 8

Δυαδικό δέντρο Δυαδικό είναι ένα δέντρο με τις ακόλουθες ιδιότητες: Κάθε εσωτερικός κόμβος έχει δύο παιδιά Τα παιδιά ενός κόμβου αποτελούν ένα διατεταγμένο δέντρο. Αποκαλούμε τα παιδιά ενός εσωτερικού κόμβου αριστερό και δεξιό παιδί. Εναλλακτικός αναδρομικός ορισμός: ένα δυαδικό δέντρο είναι είτε: Ένα δέντρο αποτελούμενο από ένα μόνο κόμβο είτε Εφαρμογές: Αριθμητικές εκφράσεις Διεργασίες αποφάσεων Αναζητήσεις Ένα δέντρο του οποίου η ρίζα έχει H I ένα διατεταγμένο ζευγάρι από παιδιά, το καθένα Δέντρα εκ των οποίων 11 είναι δυαδικό δέντρο. D B E A F C G

Δέντρα αριθμητικών εκφράσεων Σε ένα δυαδικό δέντρο που σχετίζεται με μια αριθμητική έκφραση, Οι εσωτερικοί κόμβοι είναι: τελεστές ΟΙ εξωτερικοί κόμβοι είναι: τελεστέοι Παράδειγμα: το δέντρο αριθμητικής έκφρασης για την έκφραση (2 (a - 1) + (3 b)) είναι το παρακάτω. + 2-3 b a 1 Δέντρα 12

Δέντρα Απόφασης (decision trees) Σε ένα δυαδικό δέντρο το οποίο σχετίζεται με μια διαδικασία απόφασης Οι εσωτερικοί κόμβοι είναι: ερωτήσεις με απάντηση ναι ή όχι Οι εξωτερικοί κόμβοι είναι: αποφάσεις Παράδειγμα: απόφαση για δείπνο Want a fast meal? Yes How about coffee? No On expense account? Yes No Yes No Starbucks Spike s Al Forno Café Paragon Δέντρα 13

Ιδιότητες των δυαδικών δέντρων Συμβολισμός n αριθμός κόμβων e i αριθμός εξωτερικών κόμβων αριθμός εσωτερικών κόμβων h ύψος δέντρου Ιδιότητες που ισχύουν: e = i + 1 n = 2e - 1 h i h (n - 1)/2 e 2 h h log 2 e h log 2 (n + 1) - 1 Δέντρα 14

Ο ΑΤΔ του δυαδικού δέντρου Ο ΑΤΔ του δυαδικού δέντρου αποτελεί προέκταση του ΑΤΔ του δέντρου, κληρονομώντας όλες τις μεθόδους του. Επιπλέον μέθοδοι: position leftchild(p) position rightchild(p) position sibling(p) Μέθοδοι αναβάθμισης μπορεί να ορίζονται από τις δομές δεδομένων που υλοποιούν τον ΑΤΔ του δυαδικού δέντρου. Δέντρα 15

Inorder διάσχιση Σε μια Inorder διάσχιση η επίσκεψη στον κόμβο γίνεται μετά την επίσκεψη στο αριστερό υποδέντρο και πριν την επίσκεψη στο δεξί υποδέντρο. Εφαρμογή: Ζωγραφίστε ένα δυαδικό δέντρο x(v) = inorder τάξη του v y(v) = βάθος του v 2 6 Algorithm inorder(v) if isinternal (v) inorder (leftchild (v)) visit(v) if isinternal (v) inorder (rightchild (v)) 8 1 4 7 9 3 5 Δέντρα 16

Εκτύπωση αριθμητικών εκφράσεων Εξειδίκευση μιας inorder διάσχισης Εκτύπωσε τον τελεστή ή τον τελεστέο όταν επισκέφτεσαι τον κόμβο εκτύπωσε ( πριν την διάσχιση του αριστερού υποδέντρου εκτύπωσε ) μετά την διάσχιση του δεξιού υποδέντρου. + Algorithm printexpression(v) if isinternal (v) print( ( ) inorder (leftchild (v)) print(v.element ()) if isinternal (v) inorder (rightchild (v)) print ( ) ) 2-3 b ((2 (a - 1)) + (3 b)) a 1 Δέντρα 17

Αξιολόγηση αριθμητικών εκφράσεων Εξειδίκευση της postorder διάσχισης Μια αναδρομική μέθοδος επιστρέφει την τιμή ενός υποδέντρου. Κατά την επίσκεψη ενός εσωτερικού κόμβου, συνδυάζονται οι τιμές των υποδέντρων. + Algorithm evalexpr(v) if isexternal (v) return v.element () else x evalexpr(leftchild (v)) y evalexpr(rightchild (v)) operator stored at v return x y 2-3 2 5 1 Δέντρα 18

Διάσχιση του Euler Γενική διάσχιση ενός δυαδικού δέντρου. Περιλαμβάνει τις διασχίσεις preorder, postorder και inorder Γίνεται κυκλική διάσχιση του κόμβου και η επίσκεψη σε κάθε κόμβο γίνεται τρεις φορές: Στα αριστερά (preorder) Από κάτω (inorder) Στα δεξιά (postorder) + L R 2 B - 3 2 5 1 Δέντρα 19

Template Method Pattern Γενικός αλγόριθμος ο οποίος μπορεί να εξειδικευθεί με τον επαναορισμό συσκεκριμένων βημάτων Υλοποιείται μέσω μιας Java class Οι μέθοδοι επίσκεψης μπορούν να επαναοριστούν από υποκλάσεις Template method eulertour Καλείται αναδρομικά στο δεξί και στο αριστερό παιδί public abstract class EulerTour { protected BinaryTree tree; protected void visitexternal(position p, Result r) { } protected void visitleft(position p, Result r) { } protected void visitbelow(position p, Result r) { } protected void visitright(position p, Result r) { } protected Object eulertour(position p) { Result r = new Result(); if tree.isexternal(p) { visitexternal(p, r); } else { visitleft(p, r); r.leftresult = eulertour(tree.leftchild(p)); visitbelow(p, r); r.rightresult = eulertour(tree.rightchild(p)); visitright(p, r); return r.finalresult; } Ένα Result αντικείμενο με πεδία leftresult, rightresult και finalresult ανιχνεύει το output της κλήσης της αναδρομικής συνάρτησης Δέντρα 20 eulertour

Εξειδικεύσεις του EulerTour Δείχνουμε πώς να εξειδικεύσουμε την class EulerTour για αξιολόγηση αριθμητικών εκφράσεων. Υποθέσεις Οι εξωτερικοί κόμβοι αποθηκεύουν ακέραια αντικείμενα Οι εσωτερικοί κόμβοι αποθηκεύουν Operator αντικείμενα που υποστηρίζουν μεθόδους operation (Integer, Integer) public class EvaluateExpression extends EulerTour { } protected void visitexternal(position p, Result r) { r.finalresult = (Integer) p.element(); } protected void visitright(position p, Result r) { Operator op = (Operator) p.element(); r.finalresult = op.operation( (Integer) r.leftresult, (Integer) r.rightresult ); } Δέντρα 21

Δομές δεδομένων για δέντρα Ένας κόμβος αναπαρίσταται από ένα αντικείμενο στο οποίο αποθηκεύονται Ένα στοιχείο Ο κόμβος πατέρας Η ακολουθία από κόμβους παιδιά Αντικείμενα κόμβων υλοποιούν τον ΑΤΔ της θέσης. B B A D F A D F C E C E Δέντρα 22

Δομές δεδομένων για δυαδικά δέντρα Ένας κόμβος αναπαρίσταται από ένα αντικείμενο στο οποίο αποθηκεύονται Ένα στοιχείο Ο κόμβος πατέρας Αριστερός κόμβος παιδί B Δεξιός κόμβος παιδί Αντικείμενα κόμβων υλοποιούν τον ΑΤΔ της θέσης. B A D A D C E C E Δέντρα 23

Υλοποίηση σε JAVA Interface για δέντρο Ιnterface για δυαδικό δέντρο που επεκτείνει το δέντρο Κλάσεις υλοποιούν το δέντρο και το δυαδικό δέντρο και παρέχουν Constructors Μεθόδους αναβάθμισης Μεθόδους εκτύπωσης Παράδειγμα αναβαθνίσεων για δυαδικά δέντρα expandexternal(v) removeaboveexternal(w) expandexternal(v) v A A removeaboveexternal(w) A B w B C v Δέντρα 24

Δέντρα σε JDSL Η JDSL είναι μια βιβλιοθήκη για δομές δεδομένων σε Java interfaces δέντρων σε JDSL Επιθεωρήσιμο Δυαδικό δέντρο Επιθεωρήσιμο δέντρο Δυαδικό δέντρο Δέντρο Οι επιθεωρήσιμες εκδόσεις δεν έχουν μεθόδους αναβάθμισης Κλάσεις για δέντρα σε JDSL NodeBinaryTree NodeTree Η JDSL αναπτύχθηκε στο: Brown s Center for Geometric Computing JDSL documentation and tutorials at http://jdsl.org InspectableTree InspectableBinaryTree Tree BinaryTree Δέντρα 25

Τέλος Ενότητας