Δημιουργία Δυαδικών Δέντρων Αναζήτησης



Σχετικά έγγραφα
οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

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

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 3 Δέντρα

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

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

Μονάδες 4. β. x=20 και y=10

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

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

AVL-trees C++ implementation

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

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

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

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

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

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

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

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

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙ ΕΣ

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

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

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

Δέντρα Απόφασης (Decision(

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

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

Ισοζυγισµένο έντρο (AVL Tree)

Ασκήσεις μελέτης της 6 ης διάλεξης

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

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

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

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

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

α. Λογικό διάγραμμα είναι η μέθοδος που χρησιμοποιεί απλά σχήματα που υποστηρίζονται με απλές λέξεις για την αναπαράσταση συγκεκριμένων λειτουργιών.

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

2. β. Συνθήκη ή επιλογή. 4. δ. Υποπρόγραμμα. 5. ε. ιαδικασία εισόδου ή εξόδου

Μη AVL Δέντρα Εισαγωγή κόμβου 4, 6 : 4 12 :

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

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

Θέμα 1: Robbie και Αναζήτηση

Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών. Καθηγητής: Ν. Μ. Μισυρλής 29 Μαΐου / 18

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ


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

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

Μπαλτάς Αλέξανδρος 21 Απριλίου 2015

Γραπτές εξετάσεις στο μάθημα: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Θ) Εισηγητής: Γεωργίου Χρήστος ΘΕΜΑΤΑ & ΑΠΑΝΤΗΣΕΙΣ. Β. Χαρακτήρας(Αλφαριθμητικά)

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

Transcript:

Δημιουργία Δυαδικών Δέντρων Αναζήτησης Τα Δυαδικά δέντρα αναζήτησης είναι διατεταγμένα δυαδικά δέντρα όπου έχει σημασία η διάταξη των παιδιών κάθε κόμβου. Συγκεκριμένα για τα Δυαδικά δέντρα αναζήτησης, ισχύει ότι τα δεδομένα που βρίσκονται στο αριστερό υπόδεντρο είναι έχουν τιμή μικρότερη από τα δεδομένα που βρίσκονται στο δεξί υπόδεντρο. Σημαντική είναι και η διαδικασία δημιουργίας ενός δυαδικού δέντρου αναζήτησης Παράδειγμα Έστω ότι δίνονται τα εξής δεδομένα (ακέραιοι) και με τη συγκεκριμένη σειρά:, 30, 70, 15, 40, 6, 80. Η δημιουργία των κόμβων (και κατά συνέπεια του δέντρου) γίνεται με τη σειρά που δίνονται τα δεδομένα, ως εξής: Το γίνεται ρίζα Το 30 ελέγχεται εάν είναι μικρότερο ή μεγαλύτερο από τη ρίζα. Επειδή είναι μικρότερο τοποθετείται αριστερά. Το 70 ελέγχεται εάν είναι μικρότερο ή μεγαλύτερο από τη ρίζα. Επειδή είναι μεγαλύτερο τοποθετείται δεξιά. Το 15 ελέγχεται εάν είναι μικρότερο ή μεγαλύτερο από τη ρίζα. Επειδή είναι μικρότερο προχωράμε αριστερά και το συγκρίνουμε με το 30. Επειδή είναι μικρότερο το τοποθετούμε αριστερά. Το 40 ελέγχεται εάν είναι μικρότερο ή μεγαλύτερο από τη ρίζα. Επειδή είναι μικρότερο προχωράμε αριστερά και το συγκρίνουμε με το 30. Επειδή είναι μεγαλύτερο το τοποθετούμε αριστερά. Το 6 ελέγχεται εάν είναι μικρότερο ή μεγαλύτερο από τη ρίζα. Επειδή είναι μικρότερο προχωράμε αριστερά και το συγκρίνουμε με το 30. Επειδή είναι μικρότερο προχωράμε αριστερά και το συγκρίνουμε με το 15. Επειδή είναι μικρότερο το τοποθετούμε αριστερά. Το 80 ελέγχεται εάν είναι μικρότερο ή μεγαλύτερο από τη ρίζα. Επειδή είναι μεγαλύτερο προχωράμε δεξιά και το συγκρίνουμε με το 70. Επειδή είναι μεγαλύτερο το τοποθετούμε δεξιά. Έτσι δημιουργείται το δυαδικό δέντρο αναζήτησης που φαίνεται στο παρακάτω σχήμα. 30 70 15 40 80 6 Σχήμα 1. Δυαδικό Δέντρο Αναζήτησης Αγγελόπουλος Γιάννης Σελίδα 1

Άσκηση 1 Ασκήσεις Δημιουργίας Δυαδικών δέντρων Αναζήτησης Δίνονται οι ακέραιοι : 30 60 31 58 62 61 29 70. Να δημιουργηθεί ένα δυαδικό δέντρο αναζήτησης. 30 60 29 31 58 62 61 70 Άσκηση 2 Δίνονται οι ακέραιοι : 30 60 31 58 62 61 70. Να δημιουργηθεί ένα δυαδικό δέντρο αναζήτησης. 30 60 31 58 62 61 70 Αγγελόπουλος Γιάννης Σελίδα 2

Άσκηση 3 Δίνονται οι ακέραιοι : 30 60 32 31 58 61. Να δημιουργηθεί ένα δυαδικό δέντρο αναζήτησης. 30 60 32 58 61 31 Άσκηση 4 Γράψτε οκτώ (8) ακεραίους της επιλογή σας, με τη σωστή σειρά,ώστε εάν εισαχθούν (με αυτή τη σειρά) τότε να δημιουργηθεί το ακόλουθο δυαδικό δέντρο αναζήτησης: Μια λύση είναι η ακόλουθη : Αγγελόπουλος Γιάννης Σελίδα 3

30 60 32 34 58 59 31 Εφαρμογές σε Δυαδικά Δέντρα Εφαρμογή 1 Να γραφεί αλγόριθμος σε ψευδοκώδικα ο οποίος να εμφανίζει το περιεχόμενο των δύο πιο ακραίων κόμβων - φύλλων ενός δυαδικού δέντρου. Για παράδειγμα για τα δυαδικά δέντρα των σχημάτων (α) και (β) οι ακραίοι κόμβοι που θα εμφανίζονται είναι αυτοί με την έντονη γραμμοσκίαση. Σχήμα (α) Σχήμα (β) Περιγραφή ς (*) Όρισε δύο δείκτες p και q Ο p θα χρησιμοποιηθεί για το αριστερό υπόδεντρο και θα δείχνει τη ρίζα του αριστερού υπόδεντρου ο q θα χρησιμοποιηθεί για το δεξί υποδεντρο και θα δείχνει τη ρίζα του δεξιού υπόδεντρου Για όσο ο κόμβος p δεν είναι φύλλο του δέντρου Αν ο κόμβος p έχει δυο παιδιά τότε προχώρα αριστερά Αν ο κόμβος p έχει μόνο δεξί παιδί τότε προχώρα δεξιά Αν ο κόμβος p έχει μόνο αριστερό παιδί τότε προχώρα αριστερά Για όσο ο κόμβος q δεν είναι φύλλο του δέντρου Αν ο κόμβος q έχει δυο παιδιά τότε προχώρα δεξιά Αν ο κόμβος q έχει μόνο αριστερό παιδί τότε προχώρα αριστερά Αν ο κόμβος q έχει μόνο δεξί παιδί τότε προχώρα δεξιά Εμφάνισε αποτελέσματα (*) Η λύση που προτείνεται δεν είναι η μοναδική. Οποιαδήποτε επιστημονικά τεκμηριωμένη λύση είναι αποδεκτή. Αγγελόπουλος Γιάννης Σελίδα 4

(σε ψευδοκώδικα Pascal ) P:=κόμβος_δέντρου; q:=p; p:=p^.left; {o P δείχνει το αριστερό υπόδεντρο } q:=q^.right; {o q δείχνει το δεξί υπόδεντρο } while (p^.left<> nil) or (p^.right <> nil) do begin if (p^.left <> nil) and (p^.right<> nil) then p:=p^.left; if (p^.right <> nil) and (p^.left = nil) then p:=p^.right; if (p^.left <> nil) and (p^.right = nil) then p:=p^.left end; while (q^.right <>nil) or (q^.left <> nil) do begin if (q^.right <> nil) and (q^.left <> nil) then q:=q^.right ; if (q^.left <> nil) and (q^.right = nil) then q:=q^.left; if (q^.left =nil) and (q^.right <> nil) then q:=q^.right end ; εμφάνισε ('το data το πιο αριστερού κόμβου είναι:, p^.data); εμφάνισε ('το data του πιο δεξιού κόμβου είναι: ', q^.data); end {main program} Ισοζυγισμένα Δέντρα Ως γνωστό, Ισοζυγισμένα Δέντρα (Balanced Trees) είναι τα δέντρα για τα οποία ισχύει ότι: Για κάθε κόμβο, το αριστερό του υποδέντρο διαφέρει από το δεξί του υποδέντρο κατά ένα κόμβο το πολύ. Ένας πρακτικός τρόπος για να εξετάσουμε εάν ένα δέντρο είναι ισοζυγισμένο, είναι ο ακόλουθος: Για κάθε κόμβο, ξεκινώντας από τη ρίζα, σημειώνω δύο αριθμούς δείκτες. Ο πρώτος αφορά το πλήθος των κλαδιών του αριστερού υποδέντρου μέχρι το κόμβο-φύλλο στο τελευταίο επίπεδο. Ο δεύτερος αφορά το πλήθος των κλαδιών του δεξιού υποδέντρου μέχρι το κόμβο-φύλλο στο τελευταίο επίπεδο. Εάν η διαφορά των δύο αριθμών είναι μεγαλύτερη από ένα, δέντρο δεν είναι ισοζυγισμένο. τότε το Αγγελόπουλος Γιάννης Σελίδα 5

Τα παραπάνω φαίνονται στα επόμενα παραδείγματα. Παράδειγμα 1 Στο παρακάτω δέντρο, φαίνεται ότι η διαφορά των δύο αριθμών-δεικτών δεν είναι μεγαλύτερη από ένα, σε κανένα κόμβο, οπότε το δέντρο είναι ισοζυγισμένο. Α 2 3 Β C 1 1 1 2 D E F G 00 00 0 0 1 1 H I 0 0 0 0 Παράδειγμα 2 Δεν συμβαίνει όμως το ίδιο και με το επόμενο δέντρο Α 3 1 Β C 2 0 0 0 D 1 0 E 0 0 Είναι προφανές ότι το δέντρο δεν είναι ισοζυγισμένο διότι στους κόμβους Α και Β, η διαφορά των δύο αριθμών δεν είναι μεγαλύτερη από ένα Αγγελόπουλος Γιάννης Σελίδα 6