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

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

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

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

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

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

AVL-trees C++ implementation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

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

p

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

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

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

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

public class ArrayStack implements Stack {

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

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

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

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

int Α[] = {4, 16, 22, 12, 9, 15, 10}; { 4, 9, 10, 12, 15, 16, 22 } Α[0]=4, Α[1]=9, Α[2]=10 { 4, 16,22, 12, 9, 15, 10} { 4, 12, 16, 22, 9, 15,16, 22 }

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

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

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

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Από τη UML στον Κώδικα. Μέρος Α

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

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

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

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Δέντρα Δυαδικής Αναζήτησης Κεφάλαιο 12 ( ) Ε. Μαρκάκης Επίκουρος Καθηγητής

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

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

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

4 ΔYNAMIKEΣ ΔOMEΣ ΔEΔOMENΩN

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

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

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

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

public class ArrayQueue implements Queue {

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

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

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

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

Προγραμματισμός Αναδρομή

Transcript:

Συγκρίσιμα Αντικείμενα (comparable) public class Student implements Comparable{ public String lastname; public String firstname; public int am; public int compareto(object s) throws ClassCastException{ if (!(s instanceof Student)) throw new ClassCastException("A Student object expected."); if (this.am<((student) s).am) return -1; else if (this.am>((student) s).am) return 1; else return 0; Student s1=new Student("Liaka","Kaiti",230450); Student s2=new Student("Manou","Mary", 230456); if (s1.compareto(s2) <0 ) System.out.println("1st has smaller AM"); else if (s1.compareto(s2) >0) System.out.println("1st has bigger AM"); else System.out.println("with same AM"); // == 0 VK 54

Binary Search Tree :Αλλαγή του item από intσε Οbject Yλοποίηση Κόμβου public class TreeNode { private TreeNode left; private Οbject item ;//πριν ήταν int privatetreenode right; //. Yλοποίηση Δένδρου public class ΒSTree { private TreeNode root; // class TreeNode Θα αλλαχθούν οι µέθοδοι δοµητές setitem(object item) Object getitem() class BSTree Θα αλλαχθούν οι µέθοδοι που απαιτούν σύγκριση δεδοµένων. Στην εισαγωγή νέου κόµβου σε ένα BST συγκρίνουµε τα δεδοµένα data του νέου κόµβου µε τo item του κόµβου node. Η µέθοδος : insertelement(comparable data) καλεί την insert µε κόµβο τον root: insert(data, root) για να συγκρίνει το dataµε το item του κόµβου για να αποφασίσει αν θα το βάλει στα αριστερά ή στα δεξιά του. insert (Comparable data, TreeNode node) { if (data.compareto (node.getitem()) <0 // VK 55

Υψος κόμβου και δένδρου(binarysearchtree) Το ύψος του δένδρου είναιτο ύψος του root Η και είναι η απόστασή του από το µακρινότερο παιδί του (είναι το/τα D,N) δηλ.3. Το ύψος του κόµβου Rείναι 2 Το ύψος του κόµβου Cείναι 1 Tα ύψη των φύλλων είναι 0 Υψοςενόςκόμβου Είναι η απόστασή του από το μακρινότερο παιδί του. Αναδρομικός υπολογισμός: Το μέγιστο από τα ύψη των παιδιών του προσαυξημένο κατά 1. Υψος ενός δένδρου Είναιτούψοςτηςρίζαςτου. VK 56

1 Κόμβοι & Υψος ΔένδρουBST 0 Μαx Αρ.Κόµβων ανά επίπεδο επ.0 1 = 2 0 επ.1 2 = 2 1 επ.2 4 = 2 2 επ.3 8 =2 3.. επ. i 2 i Σύνολο Κόµβων 2 = 2 h+1-1 Αραοµέγιστος 3 αριθµός κόµβωνενός δυαδικού δένδρου µε ύψος h είναι 2 h+1-1 2 3+1-1 =15 Αναδροµικός υπολογισµός αριθµού κόµβων δένδρου: Ο αριθµός κόµβων του δένδρου, είναι ίσος µε το άθροισµα των κόµβων του αριστερού κλάδου και του δεξιού κλάδου, συν 1. VK 57

BST: πλήθος κόμβων, ύψος αναδρομικές μέθοδοι: 1. Υπολογίζει και επιστρέφειτο πλήθοςτων κόμβων του δένδρου private int size(treenodenode) if (node==null) πλήθος 0 πλήθος του αριστερού κλαδιού + πλήθος του δεξιού κλαδιού +1 2. Υπολογίζει και επιστρέφει το ύψοςτου δένδρου private int height (TreeNodenode) if (node == null) ύψος -1 if (node.isleaf()) ύψος 0 ύψος= 1+mαx(ύψος αριστερού κλαδιού, ύψος δεξιού κλαδιού) // Math.max(a1,a2) για int,float,double 3. Υπολογίζει και επιστρέφει το ύψος του κόμβου με δεδομένα data private int height (Comparable data) Ανάγεται => 3a. Kαλεί την height(όπως στο 2.) αφού πρώτα 3b. ψάξει το data και επιστρέψει τον κόμβο node που το έχει (με συγκρίσεις) private TreeNodesearch(Comparabledata,TreeNodenode) Συγκρίνει data και node.item αν είναι IΣΑ επιστρέφεται το node αν υπάρχει κόμβος αριστερά θα ψάξει αριστερά αν δεν το βρήκε αριστερά, και υπάρχει κόμβος δεξιά θα ψάξει δεξιά VK 58

ΒST problems boolean lookup(οbject target)//search Eλέγχει αν υπάρχει σε κάποιο κόμβο«η τιμή» target. int size(treenode node) Μετρά τον αριθμό των κόμβων. int maxdepth(treenode node)//ύψος δένδρου Μετρά τον αριθμό των κόμβων στο μακρύτερο κλαδί maxdepth=3 int minvalue() //και αντίστοιχα maxvalue() Βρίσκει την μικρότερη τιμή από όλους τους κόμβους, που βρίσκεται κάτω αριστερά. boolean haspathsum(treenode node, int sum) Eλέγχειαν υπάρχει μονοπάτι που το άθροισμα των τιμών των κόμβων είναι το sum. (κλήση left/right node με subsum = sum - node.getitem() void printpaths(treenode node) Tυπώνειόλα τα μονοπάτια από την ρίζα προς τα φύλλα (ένα ανά γραμμή). (με πίνακα και δείκτη) void mirror(treenode node) Αλλάζει το δένδρο αντιστρέφοντας αριστερό με δεξιό κόμβο (swap left/right node) VK 59

void doubletree(treenode node) ΒST problems Για κάθε κόμβο δημιουργείται νέος κόμβος με ίδια τιμή και μπαίνει ως αριστερό του παιδί (node.setleft(new TreeNode(node.getItem())) boolean sametree(treenode node, TreeNode node1) Eλέγχει αν δυο δένδρα είναι ίδια (ξεκινά συγκρίνοντας τις 2 ρίζες..) static int counttrees(int nb) Μετρά το πλήθοςτων διαφορετικών BSTδένδρων με nb κόμβους, π.χ.με nb=3 κόμβους φτιάχνω 5 BST. Για κάθε κόμβο μετρά δεξιά επί αριστερά δένδρα(sum += left*right)!!! boolean isbst(τreenode Node) Eλέγχει αν ένα δένδρο είναι BST / δυαδικό δένδρο αναζήτησης (συγκρίνεις με MaxValue αριστερού κόμβου και αντίστοιχα με MinValue δεξιού κόμβου ) http://cslibrary.stanford.edu/110/binarytrees.html#java //(με int item) int oddsize(treenode node) //και αντίστοιχα evensize() Μετρά το πλήθος των κόμβων, με item περιττό αριθμό (node.getitem()%2)!=0) int rightnodecount(treenode node)//και αντίστοιχα leftnodecount Μετρά το πλήθος των κόμβων, που είναι δεξιά παιδιά στο δέντρο. int BF_zero(TreeNode node) Μετρά το πλήθος των κόμβων με balance factor0( bf=ύψος δεξιού -ύψος αριστερού υπόδενδρου) VK 60