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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
Advertisements

Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι18/10/2010.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 4: Δείκτες, συναρτήσεις και διαδικασίες Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος δ
Ε. ΠετράκηςΣτοίβες, Ουρές1 Στοίβες  Στοίβα: περιορισμένη ποικιλία λίστας  τα στοιχεία μπορούν να εισαχθούν ή να διαγραφούν μόνο από μια άκρη : λίστες.
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΦΥΣΙΚΟ ΚΑΙ ΚΟΙΝΩΝΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Αναστοπούλου Μαριάννα Καθηγήτρια Μουσικής και Σχολικού Επαγγελματικού Προσανατολισμού.
ΕΞΩΤΕΡΙΚΗ ΜΕΤΑΝΑΣΤΕΥΣΗ ΤΩΝ ΕΛΛΗΝΩΝ ΕΠΙΜΕΛΕΙΑ: Α 1 PROJECT.
Τι πρέπει να ξέρεις για το Γενικό Λύκειο. Όσα ακολουθούν παρακάτω προκύπτουν από την επεξεργασία του νόμου 4186/ΦΕΚ 193/ και τη συνέντευξη που.
Η νέα δομή του Γενικού Λυκείου  Ωρολόγια π ρογράμματα ανά τάξη  Τρό π ος π ροαγωγής και α π όλυσης  Παρουσιάζονται κατά σειρά :  Α ’ Λυκείου  Β ’
Σχολικό έτος B’ Λυκείου  Μαθήματα  Ομάδες προσανατολισμού Γ’ Λυκείου  Ομάδες προσανατολισμού  Επιστημονικά Πεδία
Αντιρατσιστική Εκ π αίδευση Βασικές αρχές ΣΧΟΛΕΙΟ ΧΩΡΙΣ ΡΑΤΣΙΣΜΟ ΣΧΟΛΕΙΟ ΜΕ ΑΝΕΚΤΙΚΟΤΗΤΑ.
Project Α’ Τετραμήνου Β’ Λυκέιου. Εισαγωγή  Μανιτάρι ονομάζεται κοινώς το ορατό μέρος πολυκύτταρων μυκήτων με τη χαρακτηριστική, συνήθως ομβρελοειδή.
ΓΕΝΙΚΟ ΛΥΚΕΙΟ ΛΟΥΤΡΩΝ ΑΙΔΗΨΟΥ Ερευνητική Εργασία (Project) Ομάδα 1 Αναστασιάδη Ανδριανή Στεργίου Μαρία - Ιωάννα Χασάϊ Φιορίντα Χουλιαράκη Αλεξάνδρα Ομάδα.
ΠΡΟΒΛΗΜΑΤΑ ΣΤΗ ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΚΥΚΛΟΦΟΡΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ
1 Ο ΕΠΑΛ ΣΤΑΥΡΟΥΠΟΛΗΣ ΣΧΟΛ. ΕΤΟΣ Α΄ΤΕΤΡΑΜΗΝΟ ΜΑΘΗΜΑ ΕΡΕΥΝΗΤΙΚΗ ΕΡΓΑΣΙΑ ( PROJECT) ΥΠΕΥΘΥΝΕΣ ΚΑΘΗΓΗΤΡΙΕΣ : ΠΑΛΑΙΟΛΟΓΟΥ ΒΙΚΤΩΡΙΑ ΑΜΠΕΡΙΑΔΟΥ ΔΕΣΠΟΙΝΑ.
Η καθημερινή ζωή στο Βυζάντιο Εργασία της μαθήτριας: Τζένη Αλουσάι στο μάθημα της Ιστορίας ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΗΤΡΙΑ:κα.Τσαούση.
AΘΛΗΤΙΣΜΟΣ 1.Ο αθλητισμός στην Αρχαία Ελλάδα Οι ρίζες του ελληνικού αθλητισμού μπορούν να αναζητηθούν στην Εποχή του Χαλκού. Στους ιστορικούς χρόνους οι.
Όνομα εκπαιδευτικών που συμμετέχουν :, Καλλιόπη Κάμπουρα. Γεωργία Κάσπαρη, Ανδριάνα Μπακόλα. Σχολική Μονάδα : 2 ο και 6 ο Νηπιαγωγείο Χίου. Σχολική τάξη.
ΑΡΧΑΪΚΟ ΕΠΟΣ: ΟΜΗΡΟΣ ΣΤΟΙΧΕΙΑ ΟΜΗΡΙΚΗΣ ΔΙΑΛΕΚΤΟΥ Α. Τσοπανάκης, Εισαγωγή στον Όμηρο, Θεσ/νίκη 2004, σ
Θέμα Εργασίας : ΙΡΙΔΙΣΜΟΣ Project : 5 Μανιφάβα Αλεξάνδρα.
ΖΑΧΑΡΙΑΣ ΠΑΠΑΝΤΩΝΙΟΥ ΤΑ ΨΗΛΑ ΒΟΥΝΑ PROJECT Α’ ΛΥΚΕΙΟΥ.
1 Προγραμματισμός Ι Ενότητα 7 : Πίνακες I Αλέξανδρος Τζάλλας Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Οι Δομές Δεδομένων Ουρά και Στοίβα
10η Διάλεξη Ταξινόμηση E. Μαρκάκης
Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Η Γλώσσα Pascal Εντολή If
Τεχνολογία και Προγραμματισμός Υπολογιστών
Καθορίζουν το είδος των υπό δημιουργία περιπτώσεων ελέγχου.
Αλγόριθμοι Ταξινόμησης – Μέρος 3
Ενότητα 1 : Εισαγωγικά Στοιχεία της Pascal Αλέξανδρος Τζάλλας
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ.
Νικήτας Σγούρος Μεταγλωττιστές Νικήτας Σγούρος
Νικήτας Σγούρος Μεταγλωττιστές Νικήτας Σγούρος
EPL231 – Data Structures and Algorithms
Χωρικοί-χρονικοί συμβιβασμοί
Ο άνθρωπος πάντα αισθανόταν εγκλωβισμένος στη γη…
Πρότυπα Προγραμματισμού
Σχεδιασμός με αναζήτηση στο χώρο πλάνων
11η Διάλεξη Ταξινόμηση Quicksort και Ιδιότητες Δέντρων Ε. Μαρκάκης
Ερώτηση : Τι βαθμό πήρατε στα Καλλιτεχνικά;
Η στήριξη και η κίνηση στους ζωικούς οργανισμούς
Τα βασικά μέρη του Η/Υ.
Ενότητα 8 : Πίνακες IΙ Αλέξανδρος Τζάλλας
Εισαγωγή στην Επεξεργασία Ερωτήσεων
Η Κωνσταντινα και οι αραχνεσ τησ
Οι Δομές Δεδομένων Ουρά και Στοίβα
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Δυναμικός Κατακερματισμός
ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ
Αναδρομικές Εξισώσεις και Αφηρημένοι Τύποι Δεδομένων
Δομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures)
Μεταγλωττιστές Μεταγλωττιστής είναι το λογισμικό το οποίο πραγματοποιεί την μετάφραση ενός προγράμματος από μία γλώσσα σε μία άλλη. Γιατί ασχολούμαστε.
ΚΑΘΟΔΟΣ ΤΩΝ ΠΕΛΟΠΟΝΝΗΣΟΣ ΕΙΛΩΤΕΣ-ΠΕΡΙΟΙΚΟΙ ΓΕΩΜΕΤΡΙΚΑ ΧΡΟΝΙΑ
ΕΑΠ – ΠΛΗ24 2η ΟΣΣ.
THIẾT KẾ VÀ ĐÁNH GIÁ THUẬT TOÁN
THOMAS H. CORMEN, et al., ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ, Β΄ έκδοση, ΠΕΚ 2016,
Εισαγωγή στον αλγεβρικό λογισμό
ΙΝΣΤΙΤΟΥΤΟ ΕΛΛΗΝΙΚΟΥ ΓΑΛΑΚΤΟΣ
Δομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures)
THOMAS H. CORMEN, et al., ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ, Β΄ έκδοση, ΠΕΚ 2016,
Μεταγράφημα παρουσίασης:

Δομές Δεδομένων (Data Structures) Διδάσκων: Αν. καθηγητής Χρήστος Μακρής 2610-996968 makri@ceid.upatras.gr Διδάσκων με βάση Π.Δ. 407: Ανδρέας Καναβός Kanavos@ceid.upatras.gr Διδάσκων (ΕΔΙΠ): Άρης Ηλίας aristeid@ceid.upatras.gr

Διδασκαλία Μαθήματος 4 ώρες την εβδομάδα (θεωρία + ασκήσεις). Τρίτη 13-15 (Β) και Πέμπτη 13-15 (Β). Εργασία συμπληρωματική του βαθμού. Η εργασίες παραδίδονται Ιανουάριο/Σεπτέμβριο. Ο βαθμός της εργασίας μπορεί να κρατηθεί μέχρι το Σεπτέμβριο.

Υπολογισμός βαθμού (1) Το μάθημα περιλαμβάνει τελική γραπτή εξέταση και εργαστηριακές ασκήσεις (project).  Οι ασκήσεις είναι ατομικές Η παράδοση των εργαστηριακών ασκήσεων είναι απαραίτητη για τoυς φοιτητές 2ου έτους. Για τους φοιτητές μεγαλυτέρων ετών είναι προαιρετική. Οι εργαστηριακές ασκήσεις μπορούν να παραδοθούν Ιούνιο ή Σεπτέμβριο. Οι βαθμοί των ασκήσεων θα προσμετρήσουν στην τελική βαθμολογία εφόσον ο βαθμός της τελικής γραπτής εξέτασης είναι >= 5.

Υπολογισμός βαθμού (2) Ανάλογα με το ποσοστό ολοκλήρωσης της εργασίας, και όταν αυτό είναι ικανοποιητικό, αυτή μπορεί να προσθέσει μέχρι και 1.5 βαθμό στον βαθμό της γραπτής εξέτασης εφόσον παραδοθεί στην τρέχουσα περίοδο (Εξεταστική Ιουνίου) ενώ αν παραδοθεί τον Σεπτέμβριο μπορεί να προσθέσει μέχρι και 1 βαθμό. Θεωρείται ότι έχει παραδοθεί εργασία αν ο προσθετικός βαθμός που ανακοινωθεί είναι μεγαλύτερος του 0 (0-1,5) και έχει υλοποιήσει >=50% της εργασίας. Η βαθμολογία της εργασίας έχει ισχύ μόνο για το τρέχον ακ.έτος στο οποίο έχει παραδοθεί.

Διδακτικό βιβλίο Διδακτικό Βιβλίο: Α. Τσακαλίδης: Δομές Δεδομένων, Εκδόσεις Πανεπιστημίου Πατρών, 2008. Βιβλία από ΕΥΔΟΞΟ: ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ: ΤΑ ΒΑΣΙΚΑ ΕΡΓΑΛΕΙΑ, KURT MEHLHORN, PETER SANDERS Δομές Δεδομένων, 2η Έκδοση, Μποζάνης Παναγιώτης Δ. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

Εισαγωγικά Δομή Δεδομένων= η συγκεκριμένη υλοποίηση ενός συχνά εμφανιζόμενου Αφηρημένου Τύπου Δεδομένων. Αφηρημένος Τύπος Δεδομένων είναι ένα σύνολο μαζί με μία συλλογή πράξεων στα στοιχεία του συνόλου. Παραδείγματα Δομών -- Λεξικό (βασικές πράξεις η εισαγωγή/διαγραφή στοιχείων και ο έλεγχος ανήκει/δεν ανήκει) – Διαφοροποίηση από έλεγχο για Predecessor -- Ουρές Προτεραιότητας (βασικές πράξεις η ένθεση στοιχείων, η εύρεση και διαγραφή του ελαχίστου)

Μοντέλα Μηχανής Μοντέλο Μηχανής Δεικτών (Pointer Machine)= η μνήμη αποτελείται από συλλογή εγγραφών, με κάθε εγγραφή να αποτελείται από ένα σύνολο από κελιά. Κάθε κελί έχει ένα τύπο (pointer, integer, real) και η προσπέλαση κελιών γίνεται με χρήση δεικτών. RAM Μοντέλο Υπολογισμού= η μνήμη αποτελείται από ένα πίνακα από κελιά, όπου κάθε κελί προσπελαύνεται με τη διεύθυνσή του. Υποθέτουμε ότι κάθε κελί μπορεί να περιέχει αριθμούς αυθαίρετου μεγέθους και ότι οι βασικές αριθμητικές πράξεις και πράξεις δεικτών παίρνουν σταθερό χρόνο (uniform cost assumption). Μετρικές Εκτίμησης Απόδοσης Χωρική, χρονική πολυπλοκότητα (διαφοροποίηση για τα δύο μοντέλα υπολογισμού).

RAM Μοντέλο Υπολογισμού Βασικό θεωρητικό μοντέλο υπολογισμού: Άπειρη μνήμη Ομοιόμορφο κόστος προσπέλασης 4 καταχωρητές: 1 συσσωρευτή A, καταχωρητές δείκτη γ1, γ2, γ3.

Χρονική Πολυπλοκότητα Ανάλυση μέσης περίπτωσης (average case analysis)= μία πιθανοτική κατανομή τίθεται στις πράξεις ενός αφηρημένου τύπου δεδομένων και το μέσο κόστος των πράξεων υπολογίζεται. Ανάλυση Χειρότερης Περίπτωσης (worst case analysis)= υπολογίζονται πολυπλοκότητες χειρότερης περίπτωσης για κάθε πράξη. Ανάλυση Επιμερισμένης Πολυπλοκότητας= υπολογίζεται το συνολικό κόστος μίας ακολουθίας πράξεων και επιμερίζεται το κόστος σε καθεμία πράξη.

Eκτίμηση Πολυπλοκότητας Ορισμός: f(n) = O(g(n) αν και μόνο αν υπάρχουν θετικές σταθερές c και n0 τέτοιες ώστε f(n) ≤ cg(n) για όλα τα n ≥ n0 Ορισμός: f(n) = Ω(g(n) αν και μόνο αν υπάρχουν θετικές σταθερές c και n0 τέτοιες ώστε f(n) ≥ cg(n) για όλα τα n ≥ n0 Ορισμός: f(n) = Θ(g(n) αν και μόνο αν υπάρχουν θετικές σταθερές c1, c2 και n0 τέτοιες ώστε c1g(n) ≤ f(n) ≤ c2g(n) για όλα τα n ≥ n0

Bασική πηγή: Δομές Δεδομένων, Απ. Παπαδόπουλος http://delab.csd.auth.gr/courses/c_ds/

Bασική πηγή: Δομές Δεδομένων, Απ. Παπαδόπουλος http://delab.csd.auth.gr/courses/c_ds/

Aναδρομικές Σχέσεις Αναδρομικές Σχέσεις Παράδειγμα Πρώτης Τάξης γραμμικές μη-γραμμικές an=nan-1-1 Δεύτερης Τάξης Γραμ. με μεταβλητούς συντελεστές an=an-1+2an-2 K τάξης an=F(an-1, …,an-k) Πλήρης ιστορίας Διαίρει και Βασίλευε an=a[n/2] +a[n/2]+n

Γραμμικές Σχέσεις με σταθερούς συντελεστές c0an+c1an-1+…+ cran-r =f(n) Η λύση άθροισμα μίας ομογενούς λύσης και μίας ειδικής. an=an(h)+an(p) Εάν a1 μία ρίζα χαρακτηριστικής εξίσωσης τότε όλες οι ρίζες σχηματίζουν τη λύση: an(h)=A1a1n+A2a2n+…+ Ararn και (A1nk-1+ A2nk-2 +…+ Ak-1n+Ak)a1n

Γραμμικές Σχέσεις Aναδρομής πρώτης τάξης Μη γραμμικές σχέσεις αναδρομής Αντικατάσταση Αλλαγή μεταβλητής Συνδυάσμός λύσεων Δένδρο αναδρομής

Γενική Μέθοδος Έστω a>=1 και b>1 σταθερές, f(n) ασυμπτωτικά θετική συνάρτηση και Tn=aTn/b+f(n) αναδρομική σχέση ορισμένη σε μη αρνητικούς ακεραίους τότε: Αν f(n)=O(nlogba-ε) για ε>0 τότε Τn= Θ(nlogba) Αν f(n)=Θ(nlogba) για ε>0 τότε Τn= Θ(nlogbalogn) Αν f(n)=Ω(nlogba-ε) για ε>0 τότε Τn= Θ(nlogba) και αν af(n/b)<=f(n) για μία σταθερά c και για μεγάλο n τότε Tn=Θ(f(n)).

Δομημένοι τύποι Βασικοί τύποι δεδομένων ακέραιος, πραγματικός, χαρακτήρας, δείκτης Βασικές δομές δεδομένων Πίνακας Εγγραφή Λίστα Στοίβα Ουρά

Λίστα first(): O(1) last(): O(1) insert_after(pointer,data): O(1) Υλοποίηση με πίνακα ή με δείκτες. first(): O(1) last(): O(1) insert_after(pointer,data): O(1) remove(pointer) find(data): O(n) size(): O(1) catenate_with(list): O(1)

Στοίβα is_empty(): O(1) push(data): O(1) pop(): O(1) top(): O(1) Υλοποίηση με πίνακα ή με λίστα. Όταν υλοποίηση με λίστα χρήση: insert_after(tail,), remove(tail), last(), size().

Ουρά is_empty(): O(1) push(data): O(1) pop(): O(1) first(): O(1) Υλοποίηση με πίνακα ή με λίστα. Όταν υλοποίηση με λίστα χρήση: insert_after(tail,), remove(head), last(), size().

Υλοποίηση με πίνακα Στοίβα: Πίνακας Κ και ένας δείκτης Τop αρχικά ίσος με 0. push(data): Top=Top+1; K[Top]=data; pop(): if Top==0 error; x=K[Top]; Top=Top-1; Ουρά: Πίνακας S και δύο δείκτες Front και End. Εάν Front<End, η ουρά είναι S[Front]…S[End-1] Eάν Front=End η ουρά είναι άδεια. push(data): S[End]=data; End=(End+1) mod n; if (Front=End) then error pop(): if (Front=End) then Error; x=S[Front]; Front=(Front+1) mod n;

Αρχικοποίηση σε σταθερό χρόνο A[1; N] ο πίνακας για αρχικοποίηση. Χρησιμοποιούμε πίνακα B[1; N] και στοίβα S[1; N], A[i] έχει αρχικοποιηθεί <-> 1<= B[i]<= t ΚΑΙ S[B[i]] = i Αρχικοποίηση A[i] συνεπώς t=t+1, B[i] =t, and S[t]= i.

Δέντρο Το δέντρο είναι ένα άκυκλο συνεκτικό και μη κατευθυνόμενο γράφημα. Για οποιουσδήποτε δύο κόμβους υπάρχει ένα μοναδικό μονοπάτι Πλήθος ακμών είναι ίσο με πλήθος κόμβων μείον ένα. |Ε|=|V|-1. Υλοποίηση με πίνακα ή με δείκτες.

Ορολογία Ρίζα Πρόγονοι Απόγονοι Πατέρας Παιδιά Βαθμός κόμβου Βαθμός δένδρου Διαδρομή (path) Μήκος διαδρομής Βάθος Ύψος Φυλλοπροσανατολισμένο Κομβοπροσανατολισμένο ρίζα A B C D F E G

Δυαδικά Δένδρα Δυαδικά δένδρα: έχουν βαθμό 2. Σε κάθε κόμβο: Αριστερό υποδένδρο - δεξιό υποδένδρο Πλήρες δυαδικό δένδρο: έχει το μέγιστο αριθμό κόμβων σε κάθε επίπεδο πλην ίσως του τελευταίου (αν στο τελευταίο δεν έχει το μέγιστο αριθμό κόμβων, οι κόμβοι πρέπει να είναι όσο το δυνατό αριστερά). Αναπαράσταση Συνεχόμενη αναπαράσταση (με πίνακα) Η ρίζα μπαίνει στη θέση 0. Αν ένας κόμβος είναι στη θέση k, το αριστερό παιδί του θα είναι στη θέση 2*k και το δεξιό παιδί του θα είναι στη θέση 2*k+1. Συνδεδεμένη αναπαράσταση (η πιο συνήθης μορφή) Χρήση 2 δεικτών (left, right)

Άσκηση Θεωρήστε ένα δυαδικό δένδρο όπου κάθε κόμβος έχει δύο παιδιά ή κανένα. Αποδείξτε ότι το πλήθος των εσωτερικών κόμβων είναι ίσο με το πλήθος των φύλλων μείον ένα.

Μέθοδοι διέλευσης δένδρου Προδιάταξη: Επεξεργάσου ρίζα Εφάρμοσε το ίδιο σε υποδένδρα L1,L2, …,Lk Μεταδιάταξη Επισκέψου τα υποδένδρα L1,L2, …,Lk Ενδοδιάταξη – συμμετρική διάταξη: Επισκέψου το αριστερό υποδένδρο L1 Επισκέψου το δεξιό υποδένδρο L2 Κατά σειρά επιπέδων διαπέραση (level-order): Διασχίζουμε τα επίπεδα του δένδρου, στη σειρά από επάνω προς τα κάτω, και σε κάθε επίπεδο επισκεπτόμαστε τους κόμβους από αριστερά προς τα δεξιά.

Διαπεράσεις Δυαδικών Δένδρων // προδιατεταγμένη διαπέραση void preorder(TreeNode *t) { if (t) { visit(t); preorder(t->left); preorder(t->right); // Ρ Α Δ } // ενδοδιατεταγμένη διαπέραση void inorder(TreeNode *t){ inorder(t->left); visit(t); inorder(t->right); // Α Ρ Δ // μεταδιατεταγμένη διαπέραση void postorder(TreeNode *t){ postorder(t->left); postorder(t->right); visit(t); // Α Δ Ρ

Διαπεράσεις Δυαδικών Δένδρων Άσκηση Πόσες και ποιές διαπεράσεις απαιτούνται για να ανακατασκευάσουμε το αρχικό δυαδικό δένδρο;

Διαπεράσεις Δυαδικών Δένδρων Ανακατασκευή δυαδικού δένδρου Αν έχουμε ΜΟΝΟ μεταδιαπέραση, προδιαπέραση δεν είναι εφικτός ο προσδιορισμός αριστερού και δεξιού υποδένδρου, ενώ αν έχουμε ΜΟΝΟ ενδοδιαπέραση δεν μπορούμε να προσδιορίσουμε τη ρίζα. Συνεπώς μία διαπέραση δεν αρκεί. Ομοίως αν έχουμε δύο διαπεράσεις από μεταδιαπέραση, προδιαπέραση είναι αδύνατο να προσδιορίσουμε αριστερό και δεξιό υποδένδρο. Για παράδειγμα, δένδρο με δύο μόνο κόμβους έχει τις ίδιες μεταδιαπεράσεις, προδιαπεράσεις ανεξάρτητα αν το μοναδικό φύλλο είναι αριστερό ή δεξιό παιδί της ρίζας.

Διαπεράσεις Δυαδικών Δένδρων Ανακατασκευή δυαδικού δένδρου ΟΜΩΣ, αν έχουμε μία διαπέραση από μεταδιαπέραση, προδιαπέ-ραση ΚΑΙ την ενδοδιαπέραση, τότε με την πρώτη διαπέραση μπορούμε να προσδιορίσουμε τη ρίζα και με την ενδοδιαπέραση να προσδιορίσουμε τα στοιχεία του αριστερού και δεξιού υποδένδρου. Μετά μπορούμε να προσδιορίσουμε τις ΑΝΤΙΣΤΟΙΧΕΣ ΔΙΑΠΕΡΑΣΕΙΣ αριστερού και δεξιού υποδένδρου, σαρώνοντας τις αρχικές διαπεράσεις, και επαναλαμβάνοντας την ίδια διαδικασία να προσδιορίσουμε, από επάνω προς τα κάτω, όλο το δένδρο. ΣΥΝΕΠΩΣ ΔΥΟ ΔΙΑΠΕΡΑΣΕΙΣ είναι αρκετές αρκεί η μία από τις δύο να είναι η ενδοδιαπέραση.

Πράξεις σε φυλλοπροσανατολισμένα SEARCH(x) v<-ρίζα while (v!=φυλλο) { Εντόπισε υποδέντρο: Ηi-1(v)<x<=Hi(v) v<- i-οστός γιος του v } if (πληροφορία(v)=x) then βρεθηκε else δεν βρέθηκε INSERT(x) v<-φύλλο που τελειώνει η Search(x) if (πληροφορία(v)=x) then μη κάνεις τίποτα αλλιώς αντικατέστησε το v με min(x,cont(v) min(x,cont(v) max(x,cont(v)

DELETE(x) v<-το φύλλο στο οποίο τελειώνει η Search(x) if (πληροφορία(v)!=x) then μη κάνεις τίποτα else u<-o κοντινότερος πρόγονος του v με βαθμό >=2 Σβήσε την i-οστή πλευρά του u και ένα από τα Ηi-1(v),Hi(v) if degree(u)=1 then αντικατέστησε τον δείκτη από τον πατέρα του u προς τον u, με τον δείκτη στο γιο του u