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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Πολυπλοκότητα Παράμετροι της αποδοτικότητας ενός αλγόριθμου:
Δομές Δεδομένων - Δυαδικά Δένδρα (binary trees)
Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Δυναμική Διατήρηση Γραμμικής Διάταξης Διατηρεί μια γραμμική διάταξη δυναμικά μεταβαλλόμενης συλλογής στοιχείων. Υποστηρίζει τις λειτουργίες: Έλεγχος της.
Γιάννης Σταματίου Μερικά προβλήματα μέτρησης
Πτυχιακή εργασία: «Ανάπτυξη αλγορίθμου Γενετικού Προγραμματισμού (Genetic Programming) με δυνατότητα διαχείρισης δενδροειδών δομών και εφαρμογή του στην.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Ε. ΠετράκηςΣτοίβες, Ουρές1 Στοίβες  Στοίβα: περιορισμένη ποικιλία λίστας  τα στοιχεία μπορούν να εισαχθούν ή να διαγραφούν μόνο από μια άκρη : λίστες.
Δομές Δεδομένων (Data Structures) 3o Εξάμηνο Σπουδών Διδάσκων: Απόστολος Παπαδόπουλος και
Ουρά Προτεραιότητας: Heap
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής,
Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες:
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Αναζήτηση Κατά Βάθος Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2-3 Δένδρα, Υλοποίηση και πράξεις Β-δένδρα B-Δένδρα.
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα b Προσεγγίσεις:
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Θεωρία Βασικών Δομών Δεδομένων Διδάσκοντες:Μακρής Χρήστος, Τσακαλίδης Αθανάσιος
Μέγιστη ροή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση χωρητικότητας Κατευθυνόμενο γράφημα.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
Χρονική Πολυπλοκότητα
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
Δομές Δεδομένων και Αρχεία
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
Οι Δομές Δεδομένων Ουρά και Στοίβα
ΣΤΑΤΙΣΤΙΚΑ ΜΕΤΡΑ ΔΙΑΣΠΟΡΑΣ - ΑΣΥΜΜΕΤΡΙΑΣ - ΚΥΡΤΩΣΕΩΣ
Δυναμικός Κατακερματισμός
Επίλυση Προβλημάτων με Αναζήτηση
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Δένδρα.
Δένδρα Δένδρο είναι ένα συνεκτικό άκυκλο γράφημα. Δένδρο Δένδρο Δένδρο
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Δομές δεδομένων.
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
ΤΜΗΜΑ Μηχανικών Παραγωγής & Διοίκησης
Οι Δομές Δεδομένων Ουρά και Στοίβα
Ουρά Προτεραιότητας (priority queue)
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
Δομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures)
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Διαχρονικές Δομές Δεδομένων
Δυναμικός Κατακερματισμός
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Δομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures)
ΤΜΗΜΑ Μηχανικών Παραγωγής & Διοίκησης
Μεταγράφημα παρουσίασης:

Δομές Δεδομένων (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ου έτους. Για τους φοιτητές μεγαλυτέρων ετών είναι προαιρετική. Οι εργαστηριακές ασκήσεις μπορούν να παραδοθούν Ιούνιο ή Σεπτέμβριο και όλοι μπορούν να προσέλθουν σε γραπτή εξέταση αλλά πρέπει να παραδώσουν project το συγκεκριμένο ακαδημαϊκό έτος αλλιώς ο βαθμός της γραπτής εξέτασης δεν κρατιέται για επόμενη χρονιά. Οι βαθμοί των ασκήσεων θα προσμετρήσουν στην τελική βαθμολογία εφόσον ο βαθμός της τελικής γραπτής εξέτασης είναι >= 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 ΚΑΙ [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