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

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

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

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

Συγκρίσιμα Αντικείμενα (comparable)

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου. Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Λίστες παράλειψης (skip lists)

AVL-trees C++ implementation

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

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

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

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

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

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

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

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

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

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

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

Ουρά Προτεραιότητας (priority queue)

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

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

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

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

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

Σημειώσεις ένατης εβδομάδας

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

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

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

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

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

Στοιχειώδεις Δομές Δεδομένων

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

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

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

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

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

Το ισχυρό πλεονέκτηµα των απλών µη ταξινοµηµένων πινάκων που είναι η γρήγορη εισαγωγή, αναιρείται αν απαγορεύονται τα διπλότυπα.

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

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

Συλλογές, Στοίβες και Ουρές

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

Εργαστήριο 2 Δυναμικές Δομές Δεδομένων Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

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

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

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

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

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

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης

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

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

Αναδρομικοί Αλγόριθμοι

Συνδεδεμένη Λίστα (Linked List)

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

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

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

Δοµές Δεδοµένων. 12η Διάλεξη Διάσχιση Δέντρων και Ουρές Προτεραιότητας. Ε. Μαρκάκης

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

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

Δέντρα (Trees) - Ιεραρχική Δομή

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

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

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

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

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

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Πίνακες Συµβόλων Κεφάλαιο 12 ( ) Ε. Μαρκάκης Επίκουρος Καθηγητής

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

Κεφάλαιο 6 Ουρές Προτεραιότητας

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

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

1 Εισαγωγή στις οµές εδοµένων 2. 2 Στοίβα (Stack) 4. 3 Ουρά (Queue) 7. 4 Λίστα (List) 9. 5 Συνδεδεµένη Λίστα (Linked List) 14

Transcript:

ΔυαδικάΔΕΝΔΡΑΑναζήτησης Ρίζα (κόμβος που δεν έχει γονέα) πρόγονοι απόγονοι γονέας παιδιά έντρο είναι µία συλλογή από στοιχεία, που ονοµάζονται κόµβοι και συνδέονται µεταξύ τους µε τη βοήθεια ακµών αδέλφια κόμβοι με κοινό πατέρα Φύλλα (κόμβοι χωρίς παιδιά) Δυαδικό δένδρο Κάθε κόμβος έχει το πολύ 2 παιδιά, Το αριστερό και το δεξί. Μπορεί να έχει και ένα μόνο παιδί. (Σε ένα γνήσιο δυαδικό δένδρο, κάθε κόμβος έχει ή 0 ή 2 παιδιά) VK 46

Αριθμητικές Παραστάσεις σε δυαδικό δένδρο VK 47

Trees (Traversing) ΙΑΠΕΡΑΣΗ ΕΝ ΡΟΥ Συστηµατικός τρόπος επίσκεψης όλων των κόµβων του δένδρου. Υπάρχουν 4 τρόποι διαπέρασης: ενδοδιατεταγμένη- InOrder 1, 3, 5, 6, 8, 9, προδιατεταγµένη - PreOrder 5, 1, 3, 8, 6, 9, µεταδιατεταγµένη - PostOrder 3, 1, 6, 9, 8, 5, διάταξη κατά επίπεδα υαδικά ένδρα Αναζήτησης Κάθεκόµβος είναι µεγαλύτερος των κόµβων του αριστερού του κλάδου και µικρότερος των κόµβων του δεξιού του κλάδου (6<8<9) Όταν διαπεραστούν (traversing) µε ενδοδιάταξη (αριστερό, πατέρας, δεξί) ορίζεται µόνο στα δυαδικά δένδρα - εµφανίζονται τα στοιχεία ταξινοµηµένα. VK 48

Αναπαράσταση Δυαδικού Δένδρου με την βοήθεια διπλά συνδεδεμένης λίστας public class BSTree { private TreeNode root; public BSTree() {root=null; Υλοποίηση Κόμβου public boolean isleaf() public class TreeNode { private TreeNode left; private int item; private TreeNode right; public TreeNode(TreeNode l, int i,treenode r) {left=l; item=i; right=r; public TreeNode() {this(nulll,null,null); //μέθοδοι get/set VK 49

Trees (adding) insert (5,root) insert(1,root) insert(8,root) insert(3,root) (3 < 5) (root.left == null) insert (3,node1) insert(3,node1) (3 > 1) tree.add (5) tree.add (1) tree.add (8) tree.add (6) tree.add (3) tree.add (9) (root.right = = null) node1.left =new node(3) αν το 3 είναι µικρότερο από το «5» αν αριστερά του «5» δεν υπάρχει κάτι βάλτο αριστερά του αλλιώς insert (3, στον αριστερό του «5») void insert (item,node) Αν (item < node.item) Αλλιως Αν (node.left==null) αλλιώς node.left=new node(item) insert( item, node.left) αν (item > node.item) (node.right==null) node.right=new node(item) insert( item,node.right) αν το 3 είναι µεγαλύτερο από το «1» αν δεξιά του «1» δεν υπάρχει κάτι βάλτο δεξιά του αλλιώς insert (3, στον δεξιά του «1») VK 50

tree.remove (9) delete(9,root) Trees Removing (a. -leaf) Aν βγει φύλλο,που ΕΝ ΕΧΕΙ ΠΑΙ ΙΑ TreeNode delete(item,node) if (node == null) return node if (item==node.item) //είναι στον κόµβο if (node.isleaf) return null { //επόµενη διαφάνεια delete (9,root) (root==null) (9 == 5) (9 > 5) root.setright ( delete(9,node8)) return root delete (9,node8) delete (9,node9) (node8==null) (node9.isleaf) (9==8) return null (9 > 8) node8.setright ( delete (9,node9) ) return node8 { //δεν είναι στο κόµβο if (item < node.item) //ψάξε left node.setleft (delete(item, node.left) return node if (item > node.item) //ψάξε right node.setright(delete(item, node.right) return node VK 51

Trees Removing (b. internal -right null) tree.remove (8) =>delete(8,root) delete (8,node8) delete (8,root) (node8==null) (root==null) (8==8) (8 == 5) (node8.isleaf) (8 > 5) (node8.right==null) root.setright node8.setitem(6) ( delete(8,node8)) node8.setleft(null) return root node8.setright(null) return node8 TreeNode delete(item,node) if (node == null) return node if(item==node.item) //είναι στον κόµβο { (node.isleaf) return null { if (node.right==null) node.setitem(node.left(item)) node.setleft((node.left).left) node.setright((node.left).right) {.. //επόµενη διαφάνεια return node //δεν είναι στο κόµβο { if(item < node.item) //L node.setleft (delete(item, node.left) return node if (item > node.item) //R node.setright(delete(item, node.right) return node VK 52

2 Trees Removing (c. internal right not null) tree.remove (1) =>delete(1,root) delete (1,node1) (node1==null) (1==1) delete (1,root) (node1.isleaf) (root==null) (node1.right==null) (1 == 5) node1.setitem(3) (1 < 5) (node1.left==null) root.setleft node1.setleft(3.left) ( delete(1,node1)) node1.setright(3.right) return root return node1 TreeNode delete(item,node) if (node == null) return node if (item==node.item) //είναι στον κόµβο { if (node.isleaf) return null { if (node.right==null). { //leaf with left null node.setitem(node.left(item)) if (node.left==null) node.setleft((node.right).left) { Rnode=node.left while (Rnode.right!=null) {Rnode=Rnode.right Rnode.setRight ((node.right).left) node.setright((node.right).right) return node //δεν είναι στο κόµβο {. VK 53