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

Σχετικά έγγραφα
υαδικά δέντρα αναζήτησης

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

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

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

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

Ισοζυγισμένα υαδικά έντρα Αναζήτησης

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

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

9. Κόκκινα-Μαύρα Δέντρα

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

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

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

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

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

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

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

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

Βασικές Προτάσεις. έντρα. υαδικά έντρα Αναζήτησης ( Α) Ισοζυγισµένα έντρα και Υψος. Κάθε δέντρο µε n κόµβους έχει n 1 ακµές.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων. 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης. Ε. Μαρκάκης

4. Συνδεδεμένες Λίστες

Βασικές Έννοιες Θεωρίας Γραφημάτων

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

Ουρές προτεραιότητας

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

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

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

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

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

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

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

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

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

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

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

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

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

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

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

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα?

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ

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

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

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

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

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

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

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

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

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

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

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

AVL-trees C++ implementation

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

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

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

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

Μονοπάτια και Κυκλώµατα Euler. Στοιχεία Θεωρίας Γραφηµάτων (3,4) Παραδείγµατα. Κριτήρια Υπαρξης.

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

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

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

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

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

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

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

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

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

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

Αλγόριθµοι και Πολυπλοκότητα

Transcript:

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016

Εισαγωγή Τα δυαδικά δέντρα είναι μια από τις βασικές δομές δεδομένων που χρησιμοποιούνται στον προγραμματισμό... (Απλά) υαδικά έντρα Αναζήτησης ( Α) έντρα AVL (επόμενο μάθημα) Κοκκινόμαυρα έντρα Ένα δέντρο συνδυάζει τα πλεονεκτήματα δύο άλλων δομών Ενός ταξινομημένου πίνακα Μιας συνδεδεμένης λίστας Δομές Δεδομένων, 3ο Εξάμηνο 2

Ταξινομημένος Πίνακας Παρόλο που η αναζήτηση είναι γρήγορη υαδική αναζήτηση O(logN) Η εισαγωγή προϋποθέτει την εύρεση της κατάλληλης θέσης, και μετακίνηση των στοιχείων με μεγαλύτερα κλειδιά κατά μία θέση πάνω στον πίνακα Κατά μέσο όρο μετακίνηση των μισών στοιχείων (Ν/2 μετακινήσεις) Ο(Ν) Η διαγραφή είναι ομοίως αργή Δομές Δεδομένων, 3ο Εξάμηνο 3

Συνδεδεμένη Λίστα Οι εισαγωγές γίνονται γρήγορα σε μια συνδεδεμένη λίστα Ο(1) Η αναζήτηση ενός στοιχείου ξεκινά από την αρχή της λίστας και επισκέπτεται κάθε στοιχείο διαδοχικά, ώσπου να βρει αυτό που αναζητείται Κατά μέσο όρο θα επισκεφτούμε Ν/2 στοιχεία Ο(Ν) Δομές Δεδομένων, 3ο Εξάμηνο 4

Τι Είναι Δέντρο; Ένα δέντρο αποτελείται από κόμβους και ακμές Οι κόμβοι αναπαρίστανται με κύκλους Οι ακμές αναπαρίστανται με γραμμές που συνδέουν τους κύκλους Μετακίνηση στους κόμβους του δέντρου μέσω των ακμών Σε μία διαδρομή Από τη ρίζα προς τα κάτω (από πάνω προς τα κάτω) Δομές Δεδομένων, 3ο Εξάμηνο 5

Δέντρα Ένα συνδεδεμένο μη κατευθυνόμενο γράφημα χωρίς κύκλους Κάθε δύο κόμβοι ενός δέντρου συνδέονται με μοναδικό μονοπάτι Δομές Δεδομένων, 3ο Εξάμηνο 6

Δέντρα με Ρίζα Ένας κόμβος ορίζεται σαν ρίζα του δέντρου: το δέντρο «κρεμιέται» από αυτόν Τρεις απεικονίσεις του ίδιου δέντρου Η 2 η και 3 η απεικόνιση υπονοούν ως ρίζα τον κόμβο a και c αντίστοιχα Δομές Δεδομένων, 3ο Εξάμηνο 7

Ορολογία Δέντρων Ρίζα Γονέας Παιδί Φύλλο Υποδέντρο Μονοπάτι Επίσκεψη ιάσχιση Επίπεδα Κλειδί Δομές Δεδομένων, 3ο Εξάμηνο 8

m-αδικά Δέντρα m-αδικό δέντρο: κάθε εσωτερικός κόμβος έχει το πολύ m παιδιά Πλήρες m-αδικό δέντρο: κάθε εσωτερικός κόμβος έχει ακριβώς m παιδιά Δομές Δεδομένων, 3ο Εξάμηνο 9

Δυαδικό Δέντρο Αν κάθε κόμβος του δέντρου μπορεί να έχει το πολύ δύο παιδιά, το δέντρο ονομάζεται δυαδικό δέντρο Τα δύο παιδιά ονομάζονται αριστερό παιδί και δεξιό παιδί ανάλογα με τη θέση που έχουν Θα ασχοληθούμε με ένα συγκεκριμένο είδος δυαδικών δέντρων Τα δυαδικά δέντρα αναζήτησης ( Α) Το αριστερό υπόδεντρο ενός κόμβου πρέπει να περιέχει μόνο κόμβους με μικρότερα κλειδιά από τον κόμβο αυτό Το δεξιό υπόδεντρο ενός κόμβου πρέπει να περιέχει μόνο κόμβους με μεγαλύτερα κλειδιά από τον κόμβο αυτό Καθένα από τα αριστερό και δεξί υπόδεντρο πρέπει να είναι δυαδικά δέντρα αναζήτησης Για τον ορισμό ενός δυαδικού δέντρου αναζήτησης απαιτείται μία σχέση διάταξης προκειμένου να μπορούμε να ορίσουμε τις έννοιες μικρότερο, μεγαλύτερο Δομές Δεδομένων, 3ο Εξάμηνο 10

Παραδείγματα (1) υαδικό δέντρο αναζήτησης υαδικό δέντρο αναζήτησης? Δομές Δεδομένων, 3ο Εξάμηνο 11

Παραδείγματα (2) Όλα αυτά είναι υαδικά έντρα Αναζήτησης Δομές Δεδομένων, 3ο Εξάμηνο 12

Παράμετροι Δέντρου (1) Βάθος κομβου Το μήκος του μονοπατιού (σε πλήθος ακμών) από τη ρίζα προς τον κόμβο Η ρίζα έχει βάθος 0 Τα παιδιά της έχουν βάθος 1 Ύψος δέντρου Το μέγιστο μήκος οποιουδήποτε μονοπατιού που ξεκινά από τη ρίζα Ισοδύναμα, το μέγιστο βάθος οποιουδήποτε κόμβου Δομές Δεδομένων, 3ο Εξάμηνο 13

Παράμετροι Δέντρου (2) Δομές Δεδομένων, 3ο Εξάμηνο 14

Σύνοψη Πράξεων σε Δέντρα Αναζήτηση κόμβου με δεδομένο κλειδί Εισαγωγή κόμβου με δεδομένο κλειδί ιάσχιση δέντρου (tree traversal) Προδιατεταγμένη (pre-order) Ενδοδιατεταγμένη (in-order) Μεταδιατεταγμένη (post-order) ιαγραφή κόμβου με δεδομένο κλειδί Δομές Δεδομένων, 3ο Εξάμηνο 15

Δομές Δεδομένων, 3ο Εξάμηνο 16

Προσχέδιο Κλάσης Tree Δομές Δεδομένων, 3ο Εξάμηνο 17

Αναζήτηση Κόμβου Ξεκινάμε την αναζήτηση από τη ρίζα του δέντρου Αν το ζητούμενο αντικείμενο είναι ίσο με το αντικείμενο στη ρίζα, η διαδικασία αναζήτησης τερματίζει επιτυχώς Αν το ζητούμενο αντικείμενο είναι μικρότερο από το αντικείμενο της ρίζας, τότε η αναζήτηση συνεχίζεται στο αριστερό υποδέντρο ιαφορετικά (ζητούμενο αντικείμενο είναι μεγαλύτερο από το αντικείμενο της ρίζας, Η αναζήτηση συνεχίζεται στο δεξί υποδέντρο Αν η αναζήτηση καταλήξει σε κάποιον κόμβο απ όπου δεν υπάρχει σύνδεσμος (ακμή) για να συνεχίσει η αναζήτηση τότε το αντικείμενο δεν υπάρχει και η διαδικασία εύρεσής του είναι ανεπιτυχής Δομές Δεδομένων, 3ο Εξάμηνο 18

3<7 3>2 Αναζήτηση του στοιχείου 3 3<5 3==3 Αναζήτηση στοιχείου 3 ΕΠΙΤΥΧΗΣ!! 6>2 6<7 Αναζήτηση του στοιχείου 6 6>5 ΤΕΛΟΣ!! ΑΝΑΖΗΤΗΣΗ στοιχείου 6 ΑΝΕΠΙΤΥΧΗΣ Δομές Δεδομένων, 3ο Εξάμηνο 19

Δομές Δεδομένων, 3ο Εξάμηνο 20

Απόδοση Αναζήτησης Ο χρόνος που απαιτείται για την εύρεση ενός κόμβου εξαρτάται από το βάθος του Στη χειρότερη περίπτωση ο χρόνος αναζήτησης Ο(N) Όμως στην καλύτερη περίπτωση ο χρόνος αναζήτησης είναι ανάλογος του logn Δομές Δεδομένων, 3ο Εξάμηνο 21

Εισαγωγή Κόμβου Ξεκινώντας από την ρίζα του δέντρου αναζητούμε ένα κόμβο που περιέχει το αντικείμενο που πρόκειται να εισαχθεί Εάν το αντικείμενο βρεθεί, τότε περιέχεται ήδη στο δέντρο οπότε η διαδικασία της αναζήτησης τερματίζεται Αν η αναζήτηση είναι ανεπιτυχής φτάσαμε σε ένα κόμβο από όπου η αναζήτηση δεν μπορεί να συνεχίσει (δεν υπάρχει σύνδεσμος προς παιδί) τότε προσθέτουμε το νέο κόμβο ως παιδί του τρέχοντος κόμβου Δομές Δεδομένων, 3ο Εξάμηνο 22

Εισαγωγή κόμβου root current parent parent current parent current parent current parent.rightchild newnode Δομές Δεδομένων, 3ο Εξάμηνο 23

Δομές Δεδομένων, 3ο Εξάμηνο 24

Δομές Δεδομένων, 3ο Εξάμηνο 25

Διάσχιση Δέντρου ιάσχιση ενός δυαδικού δέντρου είναι η επεξεργασία όλων των κόμβων του με έναν συστηματικό τρόπο Προδιατεταγμένη διάσχιση (preorder tree traversal) Επίσκεψη κόμβου πριν επισκεφτούμε τα παιδιά του Μεταδιατεταγμένη διάσχιση (postorder tree traversal) Επίσκεψη κόμβου μετά την επίσκεψη των παιδιών του Ενδοδιατεταγμένη διάσχιση (inorder traversal) Επίσκεψη κόμβου μεταξύ της επίσκεψης του αριστερού και δεξιού παιδιού του. Δομές Δεδομένων, 3ο Εξάμηνο 26

Παραδείγματα Διάσχισης Δέντρου Δομές Δεδομένων, 3ο Εξάμηνο 27

Ενδοδιατεταγμένη Διάσχιση Σε ένα δυαδικό δέντρο αναζήτησης Μια ενδοδιατεταγμένη διάσχιση θα επιφέρει επίσκεψη των κομβων σε αύξουσα σειρά κλειδιού Συνεπώς, αποτελεί έναν απλό τρόπο για να δημιουργήσουμε μια ταξινομημένη λίστα των δεδομένων ενός δυαδικού δέντρου ιάσχιση με χρήση επαναληπτικής (αναδρομικής) μεθόδου οθέντος ενός κόμβου (αρχικά της ρίζας), η μέθοδος Καλεί τον εαυτό της για διάσχιση αριστερού υπόδεντρου κόμβου Επισκέπτεται τον κόμβο Καλεί τον εαυτό της για διάσχιση δεξιού υπόδεντρου κόμβου Δομές Δεδομένων, 3ο Εξάμηνο 28

Υλοποίηση Ενδοδιατεταγμένης Διάσχισης Δομές Δεδομένων, 3ο Εξάμηνο 29

Προδιατεταγμένη Διάσχιση οθέντος ενός κόμβου (αρχικά της ρίζας), η μέθοδος Επισκέπτεται τον κόμβο Καλεί τον εαυτό της για διάσχιση αριστερού υπόδεντρου κόμβου Καλεί τον εαυτό της για διάσχιση δεξιού υπόδεντρου κόμβου Δομές Δεδομένων, 3ο Εξάμηνο 30

Μεταδιατεταγμένη Διάσχιση οθέντος ενός κόμβου (αρχικά της ρίζας), η μέθοδος Καλεί τον εαυτό της για διάσχιση αριστερού υπόδεντρου κόμβου Καλεί τον εαυτό της για διάσχιση δεξιού υπόδεντρου κόμβου Επισκέπτεται τον κόμβο Δομές Δεδομένων, 3ο Εξάμηνο 31

Εύρεση Μέγιστων-Ελάχιστων Τιμών Η εύρεση ελάχιστων (αντίστοιχα μέγιστων) είναι πολύ απλή διαδικασία Για την ελάχιστη τιμή Ξεκινώντας από τη ρίζα ακολουθούμε συνεχώς αριστερό παιδί, μέχρι να φτάσουμε σε κόμβο που δεν έχει αριστερό παιδί Αυτός ο κόμβος είναι το ελάχιστο Αντίστοιχα, για μέγιστο ακολουθούμε δεξιό παιδί Δομές Δεδομένων, 3ο Εξάμηνο 32

Κώδικας public Node minimum() { Node current, last; current = root; while (current!= null) { last = current; current = current.leftchild; } return last; } Δομές Δεδομένων, 3ο Εξάμηνο 33

Διαγραφή Κόμβου ιακρίνονται 3 περιπτώσεις Ο κόμβος που θα διαγραφεί είναι φύλλο Ο κόμβος που θα διαγραφεί έχει ένα παιδί Ο κόμβος που θα διαγραφεί έχει δύο παιδιά Δομές Δεδομένων, 3ο Εξάμηνο 34

Δομές Δεδομένων, 3ο Εξάμηνο 35

Περίπτωση #1: Διαγραφή Κόμβου Χωρίς Παιδιά Αλλάζουμε το κατάλληλο πεδίο παιδιού στον πατέρα του κόμβου ώστε να είναι null και να μην δείχνει στον κόμβο parent if current node is left child parent.leftchild = null else parent.rightchild =null current node Δομές Δεδομένων, 3ο Εξάμηνο 36

Δομές Δεδομένων, 3ο Εξάμηνο 37

Περίπτωση #2: Διαγραφή Κόμβου με Ένα Παιδί Ο κόμβος έχει δύο συνδέσεις: Με τον πατέρα του Με το μοναδικό παιδί του Συνδέουμε τον πατέρα του κόμβου που διαγράφουμε απευθείας με το παιδί του Δομές Δεδομένων, 3ο Εξάμηνο 38

Περίπτωση #2: Διαγραφή Κόμβου με Ένα Παιδί parent current ιαγραφή του 5 parent.rightchild =current.leftchild Δομές Δεδομένων, 3ο Εξάμηνο 39

Περίπτωση #2: Διαγραφή Κόμβου με Ένα Υπόδεντρο parent current ypodentro = current.leftchild If ypodentro is null then ypodentro = current.rightchild ypodentro If parent.leftchild == current then parent.leftchild = ypodentro else parent.rightchild = ypodentro Δομές Δεδομένων, 3ο Εξάμηνο 40

Δομές Δεδομένων, 3ο Εξάμηνο 41

Περίπτωση #3: Διαγραφή Κόμβου με Δύο Παιδιά Για να διαγράψουμε έναν κόμβο με δύο παιδιά αντικαθιστούμε τον κόμβο με τον ενδοδιατεταγμένο διάδοχό του (inorder) Ενδοδιατεταγμένος διάδοχος ή διάδοχος ενός κόμβου Ο κόμβος με το επόμενο μεγαλύτερο κλειδί Δομές Δεδομένων, 3ο Εξάμηνο 42

Εύρεση Διαδόχου Ξεκινάμε από το δεξί παιδί του κόμβου και ακολουθούμε το μονοπάτι των αριστερών παιδιών ιαγραφή 2 εν υπάρχει αριστερό παιδί Ο 3 είναι διάδοχος του 2 Αντικατάσταση κόμβου 2 με το διάδοχό του Δομές Δεδομένων, 3ο Εξάμηνο 43

Ο Διάδοχος Δεξί Παιδί του προς Διαγραφή Κόμβου Μετακίνηση του υποδέντρου που είναι η ρίζα του διαδόχου και τοποθέτησή του εκεί που ήταν ο διαγραμμένος κόμβος 50 πατέρας 50 Βήμα 1 75 Πατέρας διαδόχου (current) ιαγραφή 75 87 Βήμα 2 62 87 ιάδοχος(successor) 62 93 93 1. parent.rightchild = successor; 2. successor.leftchild = current.leftchild; Δομές Δεδομένων, 3ο Εξάμηνο 44

Ο Διάδοχος Αριστερός Απόγονος του Δεξιού Παιδιού του προς Διαγραφή Κόμβου Μετακίνηση του υποδέντρου που είναι η ρίζα του διαδόχου και τοποθέτησή του εκεί που ήταν ο διαγραμμένος κόμβος 50 parent 50 Βήμα 3 62 75 (delnode-current) ιαγραφή 75 successorparent 87 Βήμα 4 62 77 Βήμα 1 Βήμα 2 87 79 93 ιάδοχος (successor) 77 79 93 1. successorparent.leftchild = successor.rightchild; 2. successor.rightchild = delnode.rightchild; 3. parent.rightchild = successor; 4. successor.leftchild = current.leftchild; 45 Δομές Δεδομένων, 3ο Εξάμηνο

Δομές Δεδομένων, 3ο Εξάμηνο 46

Διαγραφή Κόμβου με Δύο Παιδιά ΒΗΜΑ 1 Εάν ο κόμβος προς διαγραφή (current) είναι ρίζα τότε δεν έχει γονέα και απλά περνάμε τη ρίζα στο διάδοχο Αλλιώς ΒΗΜΑ 2 Ο κόμβος που θα διαγραφεί είναι αριστερό ή δεξί παιδί ορίζουμε το κατάλληλο πεδίο (leftchild ή rightchild) στο πατέρα του να δείχνει στο διάδοχο (successor) Ορίζουμε το αριστερό παιδί του successor να δείχνει το αριστερό παιδί του current βήμα2 βήμα1 47

Δομές Δεδομένων, 3ο Εξάμηνο 48

Πολυπλοκότητα Δυαδικών Δέντρων Αναζήτησης Η εισαγωγή και διαγραφή ενός κόμβου σ ένα Α βασίζονται στον αλγόριθμο αναζήτησης Ο απαιτούμενος χρόνος για την αναζήτηση ενός κόμβου είναι ανάλογος του ύψους h του δέντρου. υαδικό δέντρο με Ν κόμβους έχει ύψος τουλάχιστον h =log(n+1) -1 Όλες οι πράξεις ενός Α έχουν στην καλύτερη περίπτωση (όταν το Α είναι ισοζυγισμένο) πολυπλοκότητα O(logN), και στη χειρότερη Ο(Ν) Δομές Δεδομένων, 3ο Εξάμηνο 49

h=2 h=6 Ο(Ν) Ο(logΝ) ΔΔΑ με το ίδιο πλήθος κόμβων Η χρονική πολυπλοκότητα όλων των πράξεων ενός Α εξαρτάται από το σχήμα του Δομές Δεδομένων, 3ο Εξάμηνο 50

50 15 62 5 20 58 91 3 8 37 60 24 Α. είξτε το Α που προκύπτει μετά από καθεμία από τις παρακάτω πράξεις: 1) Εισαγωγή 7, 1, 55, 29 και 19 2) ιαγραφή 8, 37 και 62 Δομές Δεδομένων, 3ο Εξάμηνο 51