ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7

Dimitris Psounis
Dimitris PsounisTeacher & Manager at Δημήτρης Ψούνης - Υπηρεσίες Εκπαίδευσης à www.psounis.gr
∆οµές ∆εδοµένων σε C
Μάθηµα 7:
∆υαδικά ∆ένδρα Αναζήτησης
∆ηµήτρης Ψούνης
Περιεχόµενα Μαθήµατος
Α. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
1. Ορισµός ∆∆Α
2. Βασικές Πράξεις
3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α
4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
Β. Ασκήσεις
2∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
1. Ορισµός ∆υαδικού ∆ένδρου Αναζήτησης
3∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Το «∆υαδικό ∆ένδρο Αναζήτησης» (∆∆Α) είναι ένα δένδρο στο οποίο σε κάθε κόµβο έχει
αποθηκευτεί µία τιµή v και επιπλέον:
• Στις κορυφές του αριστερού υποδένδρου, έχουν αποθηκευτεί τιµές µικρότερες της v.
• Στις κορυφές του δεξιού υποδένδρου έχουν αποθηκευτεί τιµές µεγαλύτερες της v.
Σηµαντικό: Η ενδοδιατεταγµένη διαδροµή σε ένα ∆∆Α επιστρέφει τους αριθµούς του ∆∆Α σε αύξουσα σειρά
Παραδείγµατα ∆υαδικών ∆ένδρων Αναζήτησης:
11
146
19134
5 2617
∆∆Α που αποθηκεύει αριθµούς
john
ben pam
alice eve max tom
∆∆Α που αποθηκεύει συµβολοσειρές
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
2. Βασικές Πράξεις
4∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Οι βασικές πράξεις σε ένα δυαδικό δένδρο αναζήτησης (επεκτείνοντας το δυαδικό δένδρο) είναι:
• Εισαγωγή ενός στοιχείου στο δένδρο (insert_BST)
• Αναζήτηση ενός στοιχείου στο δένδρο (search_BST)
• ∆ιαγραφή ενός στοιχείου από το δένδρο (delete_BST)
Παρατήρηση: Επεκτείνουµε τον ορισµό του ∆υαδικού ∆ένδρου, αφού η εισαγωγή και η διαγραφή
κόµβων από το ∆∆Α θα ακολουθούν κάποιο συγκεκριµένο αλγόριθµο, ώστε µετά από την εκτέλεση
των πράξεων το δένδρο να εξακολουθεί να έχει την ιδιότητα του ∆∆Α.
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α
5∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Η συνάρτηση «Αναζήτηση» ψάχνει για το στοιχείο Χ στο δυαδικό δένδρο αναζήτησης και
επιστρέφει ΝΑΙ/ΌΧΙ ανάλογα µε το αν το στοιχείο υπάρχει στο δένδρο:
Σκιαγράφηση αλγορίθµου:
Θέτει Κ = ρίζα του δένδρου
Επανέλαβε όσο Κ ≠ KENO
Αν (Χ = Κ)
Επέστρεψε ΝΑΙ
Αλλιώς αν (Χ > Κ)
Θέσε Κ=δεξί παιδί της Κ.
Αλλιώς αν (Χ < Κ)
Θέσε Κ=αριστερό παιδί της Κ.
Τέλος-Επανάληψης
Επέστρεψε ΟΧΙ
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α
6∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Παράδειγµα Αναζήτησης του δεδοµένου 8 (κόκκινο χρώµα) και του 17 (µπλέ χρώµα)
Αναζήτηση του 8: 10(αριστερά), 6(δεξιά), 7(δεξιά), 8 (βρέθηκε). Απάντηση: ΝΑΙ
Αναζήτηση του 17: 10(δεξιά), 14 (δεξιά), 19(αριστερά). ΚΕΝΟ. Απάντηση: ΟΧΙ
10
146
1975
82
3
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α
7∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
/* TR_search_BST(): anazitisi tou x sto
DDA me riza root */
int TR_search_BST(TREE_PTR root, elem x)
{
TREE_PTR current;
current=root;
while (current!=NULL)
{
if (x == current->data)
return TRUE;
else if (x < current->data)
current=current->left;
else // x > current->data
current=current->right;
}
return FALSE;
}
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α
8∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Σκιαγράφηση αλγορίθµου:
Αν Τ είναι άδειο, τοποθέτησε το x ως ρίζα. Επέστρεψε TRUE
Θέσε Κ=ρίζα του δένδρου
Επανέλαβε:
Αν x==K
Επέστρεψε FALSE
Αλλιώς αν x<K
Αν Κ δεν έχει αριστερό παιδί:
Κατασκεύασε αριστερό παιδί της K με δεδομένο x. Επέστρεψε TRUE
Αλλιώς
Θέσε K=αριστερό παιδί του Κ.
Αλλιώς // x>K
Αν Κ δεν έχει δεξί παιδί:
Κατασκεύασε δεξί παιδί του K με δεδομένο x. Επέστρεψε TRUE
Αλλιώς
Θέσε K=δεξί παιδί του Κ.
Ο αλγόριθµος «Εισαγωγής σε ∆∆Α» δεδοµένου ενός ∆∆Α Τ και ενός δεδοµένου x:
• Αν το x υπάρχει στο δένδρο Τ επιστρέφει FALSE
• Αν το x δεν υπάρχει στο δένδρο Τ το εισάγει σε θέση που σέβεται το ∆∆Α.
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α
9∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Παράδειγµα Εισαγωγής του δεδοµένου 17
10
146
1975
82
3
10
146
1975
82
3
17
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α
10∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
/* TR_insert_BST(): eisagwgi tou x
sto DDA me riza root */
int TR_insert_BST(TREE_PTR *root, elem x)
{
TREE_PTR current;
/* 1. Eisagwgi se adeio dentro */
if (*root==NULL)
{
TR_insert_root(root, x);
return TRUE;
}
/* 2. Anazitisi + Eisagwgi sto dendro */
current=*root;
while (1)
{
if (x == current->data)
return FALSE;
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α
11∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
else if (x < current->data)
{
if (current->left==NULL)
{
TR_insert_left(current,x);
return TRUE;
}
else
current=current->left;
}
else // x > current->data
{
if (current->right==NULL)
{
TR_insert_right(current,x);
return TRUE;
}
else
current=current->right;
}
}
}
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
12∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Ο αλγόριθµος «∆ιαγραφής σε ∆∆Α» παίρνει ως όρισµα ένα δένδρο Τ και ένα δεδοµένο x (που
υπάρχει στο δένδρο) και ξεχωρίζει 3 περιπτώσεις:
• Αν ο κόµβος του x δεν έχει παιδιά, τότε διαγράφουµε τον κόµβο.
10
146
1975
82
3
Παράδειγµα: ∆ιαγραφή του «8»
ΠΡΙΝ 10
146
1975
2
3
ΜΕΤΑ
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
13∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
• Αν ο κόµβος του x έχει ένα παιδί, τότε διαγράφουµε τον κόµβο και το παιδί του τον
αντικαθιστά.
10
146
1975
82
3
Παράδειγµα: ∆ιαγραφή του «5»
ΠΡΙΝ ΜΕΤΑ 10
146
197
8
2
3
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
14∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
• Αν ο κόµβος του x έχει δύο παιδιά, τότε: Βρίσκουµε τον επόµενο στην ενδοδιατεταγµένη
διαδροµή και αντικαθιστούµε τον x µε αυτόν.
• Περίπτωση 1: Το δεξί παιδί του x δεν έχει αριστερό παιδί
• Τότε ο x αντικαθίσταται από το δεξί παιδί του (που διατηρεί το δεξί υποδένδρο του).
10
146
1975
82
3
Παράδειγµα: ∆ιαγραφή του «6»
ΠΡΙΝ ΜΕΤΑ 10
147
1985
2
3
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
15∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
• Αν ο κόµβος του x έχει δύο παιδιά, τότε: Βρίσκουµε τον επόµενο στην ενδοδιατεταγµένη
διαδροµή (y) και αντικαθιστούµε τον x µε αυτόν.
• Περίπτωση 2: Το δεξί παιδί του x έχει αριστερό παιδί
• Ο y παίρνει τη θέση του x
• Ο κόµβος του y αντικαθίσταται από το δεξί υποδένδρο του y
Παράδειγµα: ∆ιαγραφή του «10»
ΠΡΙΝ
ΜΕΤΑ
10
147
19135
2 11
12
11
147
19135
2 12
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
16∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
/* TR_delete_BST(): diagrafi tou x
apo to DDA me riza root */
int TR_delete_BST(TREE_PTR *root, elem x)
{
TREE_PTR current, parent, nextOrdered;
int p; /* 1. deksi paidi, 2. aristero paidi tou current */
int temp;
/* 1. Anazitisi tou komvou */
parent=NULL;
current=*root;
while (current!=NULL)
{
if (x == current->data)
break;
else if (x < current->data)
{
parent=current;
p=1;
current=current->left;
}
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
17∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
else // x > current->data
{
parent=current;
p=2;
current=current->right;
}
}
if (current==NULL)
return FALSE;
/* 2.1 An den exei paidia */
if (current->left==NULL && current->right==NULL)
{
free(current);
if (parent==NULL)
*root=NULL;
else
if (p==1)
parent->left=NULL;
else
parent->right=NULL;
return TRUE;
}
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
18∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
/* 2.2 Exei mono aristero paidi */
else if (current->left!=NULL && current->right==NULL)
{
if (parent==NULL)
*root=current->left;
else
if (p==1)
parent->left=current->left;
else
parent->right=current->left;
free(current);
return TRUE;
}
/* 2.3 Exei mono deksi paidi */
else if (current->left==NULL && current->right!=NULL)
{
if (parent==NULL)
*root=current->right;
else
if (p==1)
parent->left=current->right;
else
parent->right=current->right;
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
19∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
free(current);
return TRUE;
}
/* 2.4 Exei aristero kai deksi paidi */
else
{
/* 2.4.1 Vriskei ton epomeno stin endodiatetagmeni */
p=1;
nextOrdered=current->right;
while (nextOrdered->left!=NULL)
{
parent=nextOrdered;
nextOrdered=nextOrdered->left;
p=2;
}
/*2.4.2 Antallassei times me ton komvo pou diagrafetai */
current->data=nextOrdered->data;
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
20∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
/*2.4.3 Diagrafei ton komvo */
if (p==1) /*2.4.3.1 O epomenos einai to deksi paidi */
{
current->right=nextOrdered->right;
free(nextOrdered);
}
else
{
parent->left=nextOrdered->right;
free(nextOrdered);
}
}
}
Β. Ασκήσεις
Εφαρµογή 1: Μελέτη Προγράµµατος
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 21
Μελετήστε το project tree.dev στο οποίο υλοποιούνται οι βασικές πράξεις των δυαδικών
δένδρων αναζήτησης που µελετήσαµε στο µάθηµα.
Β. Ασκήσεις
Εφαρµογή 2: Εκτέλεση «µε το χέρι»
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 22
1. Εισάγετε τα ακόλουθα δεδοµένα σε ένα ∆∆Α: «10 6 3 9 12 5 4 2 1 8».
2. ∆ιαγράψτε τον κόµβο 12
3. Εισάγετε τον κόµβο 7
Β. Ασκήσεις
Εφαρµογή 2: Εκτέλεση «µε το χέρι»
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 23
4. ∆ιαγράψτε τον κόµβο 3
5. ∆ώστε την ενδοδιατεταγµένη διαπέραση του δένδρου
6. Κατασκεύαστε πλήρες δυαδικό δένδρο αναζήτησης που να περιέχει τα περιεχόµενα του
δένδρου .
1 sur 23

Recommandé

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4 par
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4Dimitris Psounis
5.8K vues25 diapositives
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 par
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 Dimitris Psounis
4.2K vues27 diapositives
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 par
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 Dimitris Psounis
3.9K vues40 diapositives
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 par
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8Dimitris Psounis
3.2K vues20 diapositives
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ) par
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
8.3K vues34 diapositives
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11 par
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11Dimitris Psounis
4K vues20 diapositives

Contenu connexe

Tendances

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ par
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣDimitris Psounis
7.7K vues35 diapositives
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ par
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥDimitris Psounis
4K vues30 diapositives
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12 par
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Dimitris Psounis
5.5K vues24 diapositives
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ par
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣDimitris Psounis
17.5K vues26 diapositives
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ) par
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
2.6K vues15 diapositives
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 par
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3Dimitris Psounis
5.7K vues52 diapositives

Tendances(20)

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ par Dimitris Psounis
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Dimitris Psounis7.7K vues
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ par Dimitris Psounis
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ par Dimitris Psounis
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Dimitris Psounis17.5K vues
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ) par Dimitris Psounis
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis2.6K vues
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 par Dimitris Psounis
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
Dimitris Psounis5.7K vues
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ par Dimitris Psounis
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
Dimitris Psounis3.5K vues
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ par Dimitris Psounis
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Dimitris Psounis9.7K vues
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ par Dimitris Psounis
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Dimitris Psounis4.2K vues
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ par Dimitris Psounis
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
Dimitris Psounis4.3K vues
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ par Dimitris Psounis
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ par Dimitris Psounis
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
Dimitris Psounis15.3K vues
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ par Dimitris Psounis
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
Dimitris Psounis12.9K vues

Plus de Dimitris Psounis

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ par
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣDimitris Psounis
4.9K vues25 diapositives
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ) par
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Dimitris Psounis
641 vues7 diapositives
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ) par
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)Dimitris Psounis
475 vues8 diapositives
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ par
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣDimitris Psounis
1.4K vues29 diapositives
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ par
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣDimitris Psounis
5.9K vues30 diapositives
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ) par
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Dimitris Psounis
3.8K vues8 diapositives

Plus de Dimitris Psounis(20)

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ par Dimitris Psounis
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Dimitris Psounis4.9K vues
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ) par Dimitris Psounis
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Dimitris Psounis641 vues
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ) par Dimitris Psounis
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
Dimitris Psounis475 vues
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ par Dimitris Psounis
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
Dimitris Psounis1.4K vues
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ par Dimitris Psounis
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Dimitris Psounis5.9K vues
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ) par Dimitris Psounis
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Dimitris Psounis3.8K vues
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C par Dimitris Psounis
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
Dimitris Psounis2.3K vues
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p) par Dimitris Psounis
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
Dimitris Psounis331 vues
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6 par Dimitris Psounis
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
Dimitris Psounis2.9K vues
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5 par Dimitris Psounis
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
Dimitris Psounis899 vues
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ) par Dimitris Psounis
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis2.5K vues
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 par Dimitris Psounis
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
Dimitris Psounis2.5K vues
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ) par Dimitris Psounis
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis4.6K vues
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 par Dimitris Psounis
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
Dimitris Psounis4.5K vues
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ) par Dimitris Psounis
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis2.2K vues
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ) par Dimitris Psounis
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis2.1K vues
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ) par Dimitris Psounis
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis2.8K vues

Dernier

ΜΑΘΗΜΑ 24 αξιολογηση.docx par
ΜΑΘΗΜΑ 24 αξιολογηση.docxΜΑΘΗΜΑ 24 αξιολογηση.docx
ΜΑΘΗΜΑ 24 αξιολογηση.docxalexandrabouts
12 vues3 diapositives
Xmas_2023_Sillogos_Goneon_kai_Kidemonon.pptx par
Xmas_2023_Sillogos_Goneon_kai_Kidemonon.pptxXmas_2023_Sillogos_Goneon_kai_Kidemonon.pptx
Xmas_2023_Sillogos_Goneon_kai_Kidemonon.pptx36dimperist
25 vues4 diapositives
Συμμετοχή Γυμνασίου Κεραμωτής στο πρόγραμμα "Kids save lives" - "Τα παιδιά σώ... par
Συμμετοχή Γυμνασίου Κεραμωτής στο πρόγραμμα "Kids save lives" - "Τα παιδιά σώ...Συμμετοχή Γυμνασίου Κεραμωτής στο πρόγραμμα "Kids save lives" - "Τα παιδιά σώ...
Συμμετοχή Γυμνασίου Κεραμωτής στο πρόγραμμα "Kids save lives" - "Τα παιδιά σώ...gymkeram
12 vues16 diapositives
ΑΝΑΠΗΡΙΑ. par
ΑΝΑΠΗΡΙΑ.ΑΝΑΠΗΡΙΑ.
ΑΝΑΠΗΡΙΑ.ssuser43d27b
9 vues7 diapositives
ΚΑΤΑΝΑΛΩΤΙΣΜΟΣ. par
ΚΑΤΑΝΑΛΩΤΙΣΜΟΣ.ΚΑΤΑΝΑΛΩΤΙΣΜΟΣ.
ΚΑΤΑΝΑΛΩΤΙΣΜΟΣ.ssuser43d27b
44 vues18 diapositives
Παγκόσμια Ημέρα Ατόμων με Αναπηρία.pptx par
Παγκόσμια Ημέρα Ατόμων με Αναπηρία.pptxΠαγκόσμια Ημέρα Ατόμων με Αναπηρία.pptx
Παγκόσμια Ημέρα Ατόμων με Αναπηρία.pptx7gymnasiokavalas
37 vues14 diapositives

Dernier(20)

ΜΑΘΗΜΑ 24 αξιολογηση.docx par alexandrabouts
ΜΑΘΗΜΑ 24 αξιολογηση.docxΜΑΘΗΜΑ 24 αξιολογηση.docx
ΜΑΘΗΜΑ 24 αξιολογηση.docx
alexandrabouts12 vues
Xmas_2023_Sillogos_Goneon_kai_Kidemonon.pptx par 36dimperist
Xmas_2023_Sillogos_Goneon_kai_Kidemonon.pptxXmas_2023_Sillogos_Goneon_kai_Kidemonon.pptx
Xmas_2023_Sillogos_Goneon_kai_Kidemonon.pptx
36dimperist25 vues
Συμμετοχή Γυμνασίου Κεραμωτής στο πρόγραμμα "Kids save lives" - "Τα παιδιά σώ... par gymkeram
Συμμετοχή Γυμνασίου Κεραμωτής στο πρόγραμμα "Kids save lives" - "Τα παιδιά σώ...Συμμετοχή Γυμνασίου Κεραμωτής στο πρόγραμμα "Kids save lives" - "Τα παιδιά σώ...
Συμμετοχή Γυμνασίου Κεραμωτής στο πρόγραμμα "Kids save lives" - "Τα παιδιά σώ...
gymkeram12 vues
ΚΑΤΑΝΑΛΩΤΙΣΜΟΣ. par ssuser43d27b
ΚΑΤΑΝΑΛΩΤΙΣΜΟΣ.ΚΑΤΑΝΑΛΩΤΙΣΜΟΣ.
ΚΑΤΑΝΑΛΩΤΙΣΜΟΣ.
ssuser43d27b44 vues
Παγκόσμια Ημέρα Ατόμων με Αναπηρία.pptx par 7gymnasiokavalas
Παγκόσμια Ημέρα Ατόμων με Αναπηρία.pptxΠαγκόσμια Ημέρα Ατόμων με Αναπηρία.pptx
Παγκόσμια Ημέρα Ατόμων με Αναπηρία.pptx
ΣΤ2 ΕΛΛΗΝΙΚΑ ΧΩΡΙΑ ΧΡΥΣΑ ΚΟΚΟΡΙΚΟΥ.pdf par Chrisa Kokorikou
ΣΤ2 ΕΛΛΗΝΙΚΑ ΧΩΡΙΑ ΧΡΥΣΑ ΚΟΚΟΡΙΚΟΥ.pdfΣΤ2 ΕΛΛΗΝΙΚΑ ΧΩΡΙΑ ΧΡΥΣΑ ΚΟΚΟΡΙΚΟΥ.pdf
ΣΤ2 ΕΛΛΗΝΙΚΑ ΧΩΡΙΑ ΧΡΥΣΑ ΚΟΚΟΡΙΚΟΥ.pdf
Γυμνάσιο Κεραμωτής - Γιορτή 17ης Νοεμβρίου 2023.pptx par gymkeram
Γυμνάσιο Κεραμωτής - Γιορτή 17ης Νοεμβρίου 2023.pptxΓυμνάσιο Κεραμωτής - Γιορτή 17ης Νοεμβρίου 2023.pptx
Γυμνάσιο Κεραμωτής - Γιορτή 17ης Νοεμβρίου 2023.pptx
gymkeram18 vues
Γυμνάσιο Κεραμωτής: Διδακτική επίσκεψη στο Ίδρυμα Ορμύλια 28.11.2023 par gymkeram
Γυμνάσιο Κεραμωτής: Διδακτική επίσκεψη στο Ίδρυμα Ορμύλια 28.11.2023Γυμνάσιο Κεραμωτής: Διδακτική επίσκεψη στο Ίδρυμα Ορμύλια 28.11.2023
Γυμνάσιο Κεραμωτής: Διδακτική επίσκεψη στο Ίδρυμα Ορμύλια 28.11.2023
gymkeram76 vues
ΑΞΙΟΠΟΙΗΣΗ ΨΗΦΙΑΚΩΝ ΕΡΓΑΛΕΙΩΝ Web 2.0 ΣΤΗ ΔΙΔΑΣΚΑΛΙΑ ΟΙΚΟΝΟΜΙΚΩΝ ΜΑΘΗΜΑΤΩΝ.pptx par Irini Panagiotaki
ΑΞΙΟΠΟΙΗΣΗ ΨΗΦΙΑΚΩΝ ΕΡΓΑΛΕΙΩΝ  Web 2.0 ΣΤΗ ΔΙΔΑΣΚΑΛΙΑ ΟΙΚΟΝΟΜΙΚΩΝ ΜΑΘΗΜΑΤΩΝ.pptxΑΞΙΟΠΟΙΗΣΗ ΨΗΦΙΑΚΩΝ ΕΡΓΑΛΕΙΩΝ  Web 2.0 ΣΤΗ ΔΙΔΑΣΚΑΛΙΑ ΟΙΚΟΝΟΜΙΚΩΝ ΜΑΘΗΜΑΤΩΝ.pptx
ΑΞΙΟΠΟΙΗΣΗ ΨΗΦΙΑΚΩΝ ΕΡΓΑΛΕΙΩΝ Web 2.0 ΣΤΗ ΔΙΔΑΣΚΑΛΙΑ ΟΙΚΟΝΟΜΙΚΩΝ ΜΑΘΗΜΑΤΩΝ.pptx
ΤΟ ΑΓΧΟΣ ΤΩΝ ΕΞΕΤΑΣΕΩΝ par ssuser43d27b
ΤΟ ΑΓΧΟΣ ΤΩΝ ΕΞΕΤΑΣΕΩΝΤΟ ΑΓΧΟΣ ΤΩΝ ΕΞΕΤΑΣΕΩΝ
ΤΟ ΑΓΧΟΣ ΤΩΝ ΕΞΕΤΑΣΕΩΝ
ssuser43d27b20 vues
ΠΡΟΓΡΑΜΜΑ_ΤΕΛΙΚΟ_01.12.2023.pdf par 2lykkomo
ΠΡΟΓΡΑΜΜΑ_ΤΕΛΙΚΟ_01.12.2023.pdfΠΡΟΓΡΑΜΜΑ_ΤΕΛΙΚΟ_01.12.2023.pdf
ΠΡΟΓΡΑΜΜΑ_ΤΕΛΙΚΟ_01.12.2023.pdf
2lykkomo1.5K vues
Γυμνάσιο Κεραμωτής - Διδακτική επίσκεψη στο Ρούπελ 31.10.2023 par gymkeram
Γυμνάσιο Κεραμωτής - Διδακτική επίσκεψη στο Ρούπελ 31.10.2023Γυμνάσιο Κεραμωτής - Διδακτική επίσκεψη στο Ρούπελ 31.10.2023
Γυμνάσιο Κεραμωτής - Διδακτική επίσκεψη στο Ρούπελ 31.10.2023
gymkeram14 vues
Palaiodologiko_2023.pptx par 36dimperist
Palaiodologiko_2023.pptxPalaiodologiko_2023.pptx
Palaiodologiko_2023.pptx
36dimperist58 vues
Παιδιά εθισμένα σε socialmedia, βιντεοπαιχνίδια. par ssuser43d27b
Παιδιά εθισμένα σε socialmedia, βιντεοπαιχνίδια.Παιδιά εθισμένα σε socialmedia, βιντεοπαιχνίδια.
Παιδιά εθισμένα σε socialmedia, βιντεοπαιχνίδια.
ssuser43d27b31 vues
Ενεργώ ως Πολίτης - Δράση "Είναι όλα τα λεμόνια ίδια;" par gymkeram
Ενεργώ ως Πολίτης - Δράση "Είναι όλα τα λεμόνια ίδια;"Ενεργώ ως Πολίτης - Δράση "Είναι όλα τα λεμόνια ίδια;"
Ενεργώ ως Πολίτης - Δράση "Είναι όλα τα λεμόνια ίδια;"
gymkeram19 vues

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7

  • 1. ∆οµές ∆εδοµένων σε C Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης ∆ηµήτρης Ψούνης
  • 2. Περιεχόµενα Μαθήµατος Α. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 1. Ορισµός ∆∆Α 2. Βασικές Πράξεις 3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α 4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α Β. Ασκήσεις 2∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
  • 3. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 1. Ορισµός ∆υαδικού ∆ένδρου Αναζήτησης 3∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Το «∆υαδικό ∆ένδρο Αναζήτησης» (∆∆Α) είναι ένα δένδρο στο οποίο σε κάθε κόµβο έχει αποθηκευτεί µία τιµή v και επιπλέον: • Στις κορυφές του αριστερού υποδένδρου, έχουν αποθηκευτεί τιµές µικρότερες της v. • Στις κορυφές του δεξιού υποδένδρου έχουν αποθηκευτεί τιµές µεγαλύτερες της v. Σηµαντικό: Η ενδοδιατεταγµένη διαδροµή σε ένα ∆∆Α επιστρέφει τους αριθµούς του ∆∆Α σε αύξουσα σειρά Παραδείγµατα ∆υαδικών ∆ένδρων Αναζήτησης: 11 146 19134 5 2617 ∆∆Α που αποθηκεύει αριθµούς john ben pam alice eve max tom ∆∆Α που αποθηκεύει συµβολοσειρές
  • 4. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 2. Βασικές Πράξεις 4∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Οι βασικές πράξεις σε ένα δυαδικό δένδρο αναζήτησης (επεκτείνοντας το δυαδικό δένδρο) είναι: • Εισαγωγή ενός στοιχείου στο δένδρο (insert_BST) • Αναζήτηση ενός στοιχείου στο δένδρο (search_BST) • ∆ιαγραφή ενός στοιχείου από το δένδρο (delete_BST) Παρατήρηση: Επεκτείνουµε τον ορισµό του ∆υαδικού ∆ένδρου, αφού η εισαγωγή και η διαγραφή κόµβων από το ∆∆Α θα ακολουθούν κάποιο συγκεκριµένο αλγόριθµο, ώστε µετά από την εκτέλεση των πράξεων το δένδρο να εξακολουθεί να έχει την ιδιότητα του ∆∆Α.
  • 5. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α 5∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Η συνάρτηση «Αναζήτηση» ψάχνει για το στοιχείο Χ στο δυαδικό δένδρο αναζήτησης και επιστρέφει ΝΑΙ/ΌΧΙ ανάλογα µε το αν το στοιχείο υπάρχει στο δένδρο: Σκιαγράφηση αλγορίθµου: Θέτει Κ = ρίζα του δένδρου Επανέλαβε όσο Κ ≠ KENO Αν (Χ = Κ) Επέστρεψε ΝΑΙ Αλλιώς αν (Χ > Κ) Θέσε Κ=δεξί παιδί της Κ. Αλλιώς αν (Χ < Κ) Θέσε Κ=αριστερό παιδί της Κ. Τέλος-Επανάληψης Επέστρεψε ΟΧΙ
  • 6. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α 6∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Παράδειγµα Αναζήτησης του δεδοµένου 8 (κόκκινο χρώµα) και του 17 (µπλέ χρώµα) Αναζήτηση του 8: 10(αριστερά), 6(δεξιά), 7(δεξιά), 8 (βρέθηκε). Απάντηση: ΝΑΙ Αναζήτηση του 17: 10(δεξιά), 14 (δεξιά), 19(αριστερά). ΚΕΝΟ. Απάντηση: ΟΧΙ 10 146 1975 82 3
  • 7. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α 7∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης /* TR_search_BST(): anazitisi tou x sto DDA me riza root */ int TR_search_BST(TREE_PTR root, elem x) { TREE_PTR current; current=root; while (current!=NULL) { if (x == current->data) return TRUE; else if (x < current->data) current=current->left; else // x > current->data current=current->right; } return FALSE; }
  • 8. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α 8∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Σκιαγράφηση αλγορίθµου: Αν Τ είναι άδειο, τοποθέτησε το x ως ρίζα. Επέστρεψε TRUE Θέσε Κ=ρίζα του δένδρου Επανέλαβε: Αν x==K Επέστρεψε FALSE Αλλιώς αν x<K Αν Κ δεν έχει αριστερό παιδί: Κατασκεύασε αριστερό παιδί της K με δεδομένο x. Επέστρεψε TRUE Αλλιώς Θέσε K=αριστερό παιδί του Κ. Αλλιώς // x>K Αν Κ δεν έχει δεξί παιδί: Κατασκεύασε δεξί παιδί του K με δεδομένο x. Επέστρεψε TRUE Αλλιώς Θέσε K=δεξί παιδί του Κ. Ο αλγόριθµος «Εισαγωγής σε ∆∆Α» δεδοµένου ενός ∆∆Α Τ και ενός δεδοµένου x: • Αν το x υπάρχει στο δένδρο Τ επιστρέφει FALSE • Αν το x δεν υπάρχει στο δένδρο Τ το εισάγει σε θέση που σέβεται το ∆∆Α.
  • 9. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α 9∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Παράδειγµα Εισαγωγής του δεδοµένου 17 10 146 1975 82 3 10 146 1975 82 3 17
  • 10. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α 10∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης /* TR_insert_BST(): eisagwgi tou x sto DDA me riza root */ int TR_insert_BST(TREE_PTR *root, elem x) { TREE_PTR current; /* 1. Eisagwgi se adeio dentro */ if (*root==NULL) { TR_insert_root(root, x); return TRUE; } /* 2. Anazitisi + Eisagwgi sto dendro */ current=*root; while (1) { if (x == current->data) return FALSE;
  • 11. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α 11∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης else if (x < current->data) { if (current->left==NULL) { TR_insert_left(current,x); return TRUE; } else current=current->left; } else // x > current->data { if (current->right==NULL) { TR_insert_right(current,x); return TRUE; } else current=current->right; } } }
  • 12. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 12∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Ο αλγόριθµος «∆ιαγραφής σε ∆∆Α» παίρνει ως όρισµα ένα δένδρο Τ και ένα δεδοµένο x (που υπάρχει στο δένδρο) και ξεχωρίζει 3 περιπτώσεις: • Αν ο κόµβος του x δεν έχει παιδιά, τότε διαγράφουµε τον κόµβο. 10 146 1975 82 3 Παράδειγµα: ∆ιαγραφή του «8» ΠΡΙΝ 10 146 1975 2 3 ΜΕΤΑ
  • 13. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 13∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης • Αν ο κόµβος του x έχει ένα παιδί, τότε διαγράφουµε τον κόµβο και το παιδί του τον αντικαθιστά. 10 146 1975 82 3 Παράδειγµα: ∆ιαγραφή του «5» ΠΡΙΝ ΜΕΤΑ 10 146 197 8 2 3
  • 14. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 14∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης • Αν ο κόµβος του x έχει δύο παιδιά, τότε: Βρίσκουµε τον επόµενο στην ενδοδιατεταγµένη διαδροµή και αντικαθιστούµε τον x µε αυτόν. • Περίπτωση 1: Το δεξί παιδί του x δεν έχει αριστερό παιδί • Τότε ο x αντικαθίσταται από το δεξί παιδί του (που διατηρεί το δεξί υποδένδρο του). 10 146 1975 82 3 Παράδειγµα: ∆ιαγραφή του «6» ΠΡΙΝ ΜΕΤΑ 10 147 1985 2 3
  • 15. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 15∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης • Αν ο κόµβος του x έχει δύο παιδιά, τότε: Βρίσκουµε τον επόµενο στην ενδοδιατεταγµένη διαδροµή (y) και αντικαθιστούµε τον x µε αυτόν. • Περίπτωση 2: Το δεξί παιδί του x έχει αριστερό παιδί • Ο y παίρνει τη θέση του x • Ο κόµβος του y αντικαθίσταται από το δεξί υποδένδρο του y Παράδειγµα: ∆ιαγραφή του «10» ΠΡΙΝ ΜΕΤΑ 10 147 19135 2 11 12 11 147 19135 2 12
  • 16. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 16∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης /* TR_delete_BST(): diagrafi tou x apo to DDA me riza root */ int TR_delete_BST(TREE_PTR *root, elem x) { TREE_PTR current, parent, nextOrdered; int p; /* 1. deksi paidi, 2. aristero paidi tou current */ int temp; /* 1. Anazitisi tou komvou */ parent=NULL; current=*root; while (current!=NULL) { if (x == current->data) break; else if (x < current->data) { parent=current; p=1; current=current->left; }
  • 17. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 17∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης else // x > current->data { parent=current; p=2; current=current->right; } } if (current==NULL) return FALSE; /* 2.1 An den exei paidia */ if (current->left==NULL && current->right==NULL) { free(current); if (parent==NULL) *root=NULL; else if (p==1) parent->left=NULL; else parent->right=NULL; return TRUE; }
  • 18. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 18∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης /* 2.2 Exei mono aristero paidi */ else if (current->left!=NULL && current->right==NULL) { if (parent==NULL) *root=current->left; else if (p==1) parent->left=current->left; else parent->right=current->left; free(current); return TRUE; } /* 2.3 Exei mono deksi paidi */ else if (current->left==NULL && current->right!=NULL) { if (parent==NULL) *root=current->right; else if (p==1) parent->left=current->right; else parent->right=current->right;
  • 19. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 19∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης free(current); return TRUE; } /* 2.4 Exei aristero kai deksi paidi */ else { /* 2.4.1 Vriskei ton epomeno stin endodiatetagmeni */ p=1; nextOrdered=current->right; while (nextOrdered->left!=NULL) { parent=nextOrdered; nextOrdered=nextOrdered->left; p=2; } /*2.4.2 Antallassei times me ton komvo pou diagrafetai */ current->data=nextOrdered->data;
  • 20. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 20∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης /*2.4.3 Diagrafei ton komvo */ if (p==1) /*2.4.3.1 O epomenos einai to deksi paidi */ { current->right=nextOrdered->right; free(nextOrdered); } else { parent->left=nextOrdered->right; free(nextOrdered); } } }
  • 21. Β. Ασκήσεις Εφαρµογή 1: Μελέτη Προγράµµατος ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 21 Μελετήστε το project tree.dev στο οποίο υλοποιούνται οι βασικές πράξεις των δυαδικών δένδρων αναζήτησης που µελετήσαµε στο µάθηµα.
  • 22. Β. Ασκήσεις Εφαρµογή 2: Εκτέλεση «µε το χέρι» ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 22 1. Εισάγετε τα ακόλουθα δεδοµένα σε ένα ∆∆Α: «10 6 3 9 12 5 4 2 1 8». 2. ∆ιαγράψτε τον κόµβο 12 3. Εισάγετε τον κόµβο 7
  • 23. Β. Ασκήσεις Εφαρµογή 2: Εκτέλεση «µε το χέρι» ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 23 4. ∆ιαγράψτε τον κόµβο 3 5. ∆ώστε την ενδοδιατεταγµένη διαπέραση του δένδρου 6. Κατασκεύαστε πλήρες δυαδικό δένδρο αναζήτησης που να περιέχει τα περιεχόµενα του δένδρου .