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

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

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

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

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

Γηάιεμε 16: Δηζαγσγή ζε Γελδξηθέο Γνκέο Γεδνκέλσλ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

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

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

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

8.6 Κλάσεις και αντικείμενα 8.7 Δείκτες σε γλώσσα μηχανής

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

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

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

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

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

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

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

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

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

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

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

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

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

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα

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

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Copyright 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση, Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-1

ιαφάνειες παρουσίασης #11

Insert(K,I,S) Delete(K,S)

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

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

έντρα ιδάσκοντες:. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

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

Βασικές Δομές Δεδομένων

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

ιδάσκοντες: Φ. Αφράτη,. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

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

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

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

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

AVL-trees C++ implementation

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012

Διάλεξη 18: Γράφοι I Εισαγωγή

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

Transcript:

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Ορισμοί και πράξεις Αναπαράσταση δενδρικών δομών δεδομένων στη μνήμη Διάσχιση Δέντρων ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1

Δέντρα Μέχρι τώρα μελετούσαμε γραμμικές δομές δεδομένων (linear data structures) π.χ. Stacks, queues, arrays, lists, κτλ Σε αυτή την ενότητα θα μελετήσουμε δενδρικές δομές δεδομένων (δηλαδή μη γραμμικές δομές) Δένδρο είναι ένα σύνολο κόμβων (κορυφών) που συνδέονται από ακμές (ή τόξα). ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2

Δέντρα Δένδρο είναι ένα σύνολο κόμβων (κορυφών) που συνδέονται από ακμές (ή τόξα) με τον ακόλουθο αναδρομικό ορισμό: 1. Ένα δένδρο είναι είτε κενό ή 2. αποτελείται από: μια ρίζα (root), δηλαδή ένα κόμβο στον οποίο δεν καταλήγουν αλλά μόνο ξεκινούν ακμές, και 0 ή περισσότερα υποδένδρα Τ 1, Τ 2,,, Τ k, το καθένα ξεχωριστό από τα άλλα και από τη ρίζα. Υπάρχει μια ακμή από τη ρίζα στις ρίζες των Τ 1, Τ 2,,, Τ k. Από κάθε κόμβο ξεκινούν 0 ή περισσότερες ακμές (edges). Σε κάθε κόμβο καταλήγει μία μόνο ακμή (αλλιώς θα είχαμε μια άλλη δομή τον γράφο) Στη ρίζα δεν καταλήγει καμιά ακμή. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 3

Παράδειγμα 1: Οργάνωση Μονοπατιών σε ένα OS /usr root /maria /christos /yiannis Ακμές (edges) /courses /mail /.netscape /epl035 /epl231 /homeworks /notes hw1 Υποδεντρό (subtree) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4

Παράδειγμα 1 (συν.) Υποθέστε ότι χρησιμοποιούσαμε μια γραμμική δομή (π.χ. ένα πίνακα) για την αποθήκευση των διάφορων μονοπατιών /usr/maria /usr/christos /usr/christos/courses /usr/christos/courses/epl035 /usr/christos/courses/epl231 /usr/christos/courses/epl231/homeworks /usr/christos/courses/epl231/homeworks/hw1 /usr /christos/courses/epl231/notes /usr /christos/mail /usr /christos/.netscape /usr /yiannis Μειονεκτήματα Καταλαμβάνουμε πολύ χώρο Επαναληπτική αποθήκευση μονοπατιού Η αναζήτηση κάποιου στοιχείου χρειάζεται Ο(n) (n μέγεθος λίστας) Στα δένδρα τα δεδομένα είναι καλύτερα οργανωμένα ώστε οι διαδικασίες αναζήτησης, εισαγωγής και εξαγωγής κόμβου να είναι πιο αποδοτικές ( O(logn) ). ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5

Παράδειγμα 2: Αναπαρ. Αριθμ. Παραστάσεων a + b (c + d) + x a + b c d ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 6

Παράδειγμα 3: Suffix Trie (ReTrieval) Μπορούμε να κρατήσουμε ένα μεγάλο λεξικό στην μνήμη του υπολογιστή και να κάνουμε αναζητήσεις για λέξεις αποδοτικά PATRICIA Trie: Κάθε ακμή περιέχει 1 ή περισσότερους χαρακτήρες (συμπίεση) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 7

Ορισμοί Όταν υπάρχει ακμή από ένα κόμβο u σε ένα κόμβο v τότε ο u είναι ο πατέρας ή ο προκάτοχος (parent) του v, και ο v είναι παιδί (child) του u. Η ορολογία αυτή γενικεύεται ώστε να μιλούμε για προγόνους (ancestors) και απογόνους (descendants) κόμβων. Κόμβοι που έχουν τον ίδιο προκάτοχο ονομάζονται αδέλφια (siblings) Κόμβοι που δεν έχουν παιδιά λέγονται φύλλα (leaves). Οι υπόλοιποι λέγονται εσωτερικοί (nonleaves branches). Βαθμός (degree) ενός κόμβου είναι ο αριθμός των παιδιών του. Βαθμός ενός δένδρου είναι ο μέγιστος από τους βαθμούς των κόμβων του. Δένδρα βαθμού n λέγονται n αδικά. Δένδρα που χρησιμοποιούνται συχνά είναι τα δυαδικά (binary), τετραδικά (quadtrees), οκταδικά (octtrees). Parent(6) => 3 Sibling(1) => 6 Leaves = {1,4,7,13} Non-leaves={3,6,7,10,14} Root={7} Degree(Tree)=2 degree(14) = 1 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 8

Βάθος και ύψος ενός δένδρου Βάθος ενός κόμβου (Node Depth) (ή επίπεδο Level) => αριθμός προγόνων + 1. π.χ. το βάθος της ρίζας ενός δένδρου είναι 1. Βάθος(6) = 3 Βάθος ενός δένδρου ονομάζουμε τον μέγιστο από τα βάθη των κόμβων. Ύψος(6): 1 Μονοπάτι ή διαδρομή (path) ενός δένδρου είναι μια ακολουθία κόμβων v 1, v 2,,, v k, όπου κάθε v i είναι πατέρας του v i+1. Το μήκος του μονοπατιού v 1, v 2,,, v k είναι k 1. Ύψος ενός κόμβου : το μήκος του μονοπατιού από το βαθύτερο κόμβο (στο ίδιο υπό δένδρο) προς τον κόμβο. π.χ. το ύψος οποιουδήποτε φύλλου είναι 0. Ύψος ενός δένδρου : το ύψος της ρίζας του δένδρου. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 9

Ορολογία Δένδρων Ρίζα(Root): κόμβος χωρίς γονέα (A) Εσωτερικός κόμβος: κόμβος με τουλάχιστον ένα παιδί (A, B, C, F) Εξωτερικός κόμβος(ή φύλλο leaf): κόμβος χωρίς παιδιά (E, I, J, K, G, H, D) Πρόγονοι ενός κόμβου: γονιός, παππούς, προ παππούς κτλ. Απόγονοι ενός κόμβου: παιδιά, εγγόνια, δισέγγονα, etc. B A C D Υπόδενδρο: δένδρο αποτελούμενο από ένα κόμβο και τους απογόνους του E F I J K G H Υποδέντρο subtree ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 10

Παράδειγμα βάθος 37 37 37 Βάθος (Depth/Level) κόμβου:1 ύψος Ύψος (Height) κόμβου: 0 24 42 24 42 Βαθμός Δένδρου = 0 Βάθος (Δένδρου): 2 6 Ύψος (Δένδρου): 1 Βάθος κόμβου 37: 1 Ύψος κόμβου 37: 1 Βάθος κόμβου 24: 2 Ύψος κόμβου 24: 0 Βαθμός Δένδρου = 2 Βάθος (Δένδρου) : 3 Ύψος (Δένδρου) : 2 Βάθος κόμβου 24: 2 Ύψος κόμβου 24: 1 Βάθος κόμβου 6: 3 Ύψος κόμβου 6: 0 Βαθμός Δένδρου = 2 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 11

Αναπαράσταση Δένδρων στη Μνήμη Υπάρχουν πολλοί τρόποι να αναπαραστήσουμε ένα κόμβο δέντρου στη μνήμη. Κάθε κόμβος αποτελείται από κάποιο αριθμό πεδίων: 1. Τα πραγματικά δεδομένα του κόμβου (το κλειδί), και 2. τα υπόλοιπα πεδία περιέχουν στοιχεία σχετικά με τη δομή του δένδρου, δηλαδή περιγράφουν με κάποιο τρόπο τη σχέση του συγκεκριμένου κόμβου με άλλους κόμβους του δένδρου. Για παράδειγμα: αναφορές στα παιδιά του Αν είναι η ρίζα, εσωτερικός ή φύλο ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 12

Αναπαράσταση Δένδρων στη Μνήμη Για δένδρο βαθμού n κάθε κόμβος έχει την πιο κάτω μορφή: Info p 1 p 2 p n όπου ο p i είναι δείκτης στο i οστό παιδί του κόμβου. Εναλλακτικά θα μπορούσαμε να αναπαραστήσουμε ένα δένδρο μέσα σε ένα στατικά ορισμένο πίνακα. Π.χ. όπου οι δείκτες είναι απλά αριθμοί (θέσεις του πίνακα). Και στις δυο περιπτώσεις θέλουμε 4 bytes ανά δείκτη (σε x86) ή integer θέσης πίνακα. Αν έχουμε ένα 5 αδικό δέντρο τότε κάθε κόμβος χρειάζεται επιπλέον 20 bytes. Αν ένας κόμβος δεν έχει παιδιά τότε αυτοί οι δείκτες θα μένουν αναξιοποίητοι, επομένως θα έχουμε σπάταλη χώρου. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 13

Αναπαράσταση Δένδρων στη Μνήμη Πρόβλημα: Μείωση της σπατάλης χώρου από αχρησιμοποίητους δείκτες/αναφορές. Λύση: Μπορούμε να μετατρέψουμε ένα δέντρο n αδικό (κάθε κόμβος με n παιδιά) σε ένα 2 αδικό (κάθε κόμβος με 2 παιδιά) χρησιμοποιώντας την πολιτική «Πρώτο Παιδί / Επόμενο Αδέρφι» (First Child/Next Sibling) Δηλαδή κάθε κόμβος u περιέχει 1. τα δεδομένα του κόμβου, 2. δείκτη στο αριστερότερο (πρώτο) παιδί του u, 3. δείκτη στον επί δεξιά αδελφό του u, αν υπάρχει. Αυτή η πολιτική μας επιτρέπει να μειώσουμε τον αριθμό των δεικτών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 14

Παράδειγμα αναπαράστασης δένδρου [Normal Tree] A B Γ Δ Δένδρο Βαθμού n (n=4) Συνολικές Αναφορές: 9 nodes *4 refs = 36 Ε Ζ Η Θ Ι [First Child/Next Sibling] Α Β Γ Δ Δένδρο Βαθμού n (n=2) Συνολικές Αναφορές: 9 nodes *2 refs = 18 NULL Pointer Ε Ζ Η Θ Ι Next sibling ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 15

Διάσχιση Δένδρων Αν θέλουμε να επισκεφθούμε όλους τους κόμβους ενός δένδρου, μπορούμε να χρησιμοποιήσουμε ένα από τους πιο κάτω τρόπους, οι οποίοι διαφέρουν στη σειρά με την οποία εξετάζουν τους κόμβους. 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; ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 16

Παράδειγμα Διάσχισης δένδρου A B Γ Δ Ε Ζ Η Θ Ι Print_Preorder(treenode u) Print u; foreach child v of u Print_Preorder(v) Print_Postorder(treenode u) foreach child v of u Print_Postorder(v) Print u; Προθεματική Διάσχιση (Preorder) : Α Β Ε Γ Δ Ζ Η Θ Ι Μεταθεματική Διάσχιση (Postorder) : Ε Β Γ Ζ Η Θ Ι Δ Α ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 17

Άλλες Χρήσιμες Πράξεις του ΑΤΔ Δένδρο Parent(u) επέστρεψε τον πατέρα του u Children(u) FirstChild(u) RightSibling(u) LeftSibling(u) IsLeaf(u) IsRoot(u) Depth(u) επέστρεψε τα παιδιά του u επέστρεψε το πρώτο παιδί του u επέστρεψε τον κόμβο στα δεξιά του u επέστρεψε τον κόμβο στα αριστερά του u αν το u είναι φύλλο τότε δώσε true, διαφορετικά δώσε false αν το u είναι η ρίζα του δένδρου δώσε true, διαφορετικά δώσε false δώσε το βάθος του u στο δένδρο. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 18

Δέντρα: Ασκήσεις Ποιος είναι ο βαθμός του κόμβου 99; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 19

Δέντρα: Ασκήσεις Ποιος είναι ο βαθμός του κόμβου 61; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 20

Δέντρα: Ασκήσεις Ποιος είναι ο βαθμός του δέντρου; 50 42 72 5 46 61 99 43 58 63 65 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 21

Δέντρα: Ασκήσεις Ποιο είναι το ύψος του κόμβου 51; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 22

Δέντρα: Ασκήσεις Ποιο είναι το ύψος του κόμβου 58; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 23

Δέντρα: Ασκήσεις Ποιο είναι το ύψος του κόμβου 72; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 24

Δέντρα: Ασκήσεις Ποιο είναι το ύψος του δέντρου; 50 42 72 5 46 61 99 43 58 65 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 25

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

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

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

Δέντρα: Ασκήσεις Κατασκευάστε ένα suffix trie για τις λέξεις: BIG, BID, BAG, GOOD, BAD, GET ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 29

Δέντρα: Ασκήσεις Μετατρέψετε το προηγούμενο suffix trie σε patricia trie ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 30