SlideShare a Scribd company logo
∆οµές ∆εδοµένων σε C
Μάθηµα 6:
∆υαδικά ∆ένδρα
∆ηµήτρης Ψούνης
Περιεχόµενα Μαθήµατος
Α. Θεωρία
1. ∆ένδρο
1. Ορισµός ∆ένδρου
2. Οικογενειακές Σχέσεις
3. Ύψος – Επίπεδα ∆ένδρου
2. ∆υαδικό ∆ένδρο
1. Ορισµός ∆υαδικού ∆ένδρου
2. Ιδιότητες ∆υαδικών ∆ένδρων
3. Βασικές Πράξεις
4. Συνεχόµενη Αναπαράσταση
5. ∆υαδική Αναπαράσταση
2∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
3. ∆υαδικά ∆ένδρα µε ∆υναµική
Αναπαράσταση
1. Υλοποίηση σε C: ∆ηλώσεις
2. Υλοποίηση σε C: Αρχικοποίηση ∆ένδρου
3. Υλοποίηση σε C: Έλεγχοι – Άδειο ∆ένδρο
4. Υλοποίηση σε C: Περιεχόµενο Κόµβου
5. Υλοποίηση σε C: Εισαγωγή ως Ρίζα
6. Υλοποίηση σε C: Εισαγωγή Αριστερού Παιδιού
7. Υλοποίηση σε C: Εισαγωγή ∆εξιού Παιδιού
8. Υλοποίηση σε C: ∆ιαγραφή Ρίζας
9. Υλοποίηση σε C: ∆ιαγραφή Αριστερού Παιδιού
10. Υλοποίηση σε C: ∆ιαγραφή ∆εξιού Παιδιού
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
1. Υλοποίηση σε C: Προδιατεταγµένη ∆ιαπέραση
2. Υλοποίηση σε C: Ενδοδιατεταγµένη ∆ιαπέραση
3. Υλοποίηση σε C: Μεταδιατεταγµένη ∆ιαπέραση
Β. Ασκήσεις
A. Θεωρία
1. ∆ένδρο
1. Ορισµός ∆ένδρου
3∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Το «∆ένδρο» είναι µια µη γραµµική, ιεραρχική δοµή δεδοµένων στην οποία:
• Αποτελείται από κόµβους (κορυφές) και ακµές (πλευρές) που οµοιάζουν µε ένα (ανάποδο)
δένδρο. Οι κόµβοι είναι τριών ειδών:
• Η ρίζα είναι ο µοναδικός κόµβος από τον οποίο µόνο ξεκινούν ακµές
• Οι εσωτερικοί κόµβοι (ή µη τερµατικοί) στις οποίες καταλήγουν και ξεκινούν ακµές.
• Τα φύλλα (ή τερµατικοί κόµβοι) στα οποία καταλήγει µόνο µία ακµή.
Παράδειγµα:
• Ρίζα: Α
• Εσωτερικοί Κόµβοι: Β,Γ,Ε
• Φύλλα: ∆,Η,Ζ
Παρατηρήσεις:
• Το δένδρο χωρίς κόµβους λέγεται «κενό δένδρο» (null tree).
• Ένας εσωτερικός κόµβος έχει τουλάχιστον ένα παιδί .
• Τα φύλλα δεν έχουν παιδιά.
A. Θεωρία
1. ∆ένδρο
2. Οικογενειακές Σχέσεις στα ∆ένδρα
4∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Σε ένα δένδρο ορίζονται «οικογενειακές σχέσεις» των κόµβων. Στο παράδειγµα µελετάµε την
οικογένεια του κόµβου Β:
Α
ΓΒ
ΖΕ∆
Η
Υποδένδρο µε
ρίζα το Β
∆: Αριστερό Παιδί του Β
Ε: ∆εξί Παιδί του Β
Α: Πατέρας της Β
(Πρόγονος του Β)
∆,Ε,Η: Απόγονοι του Β
Γ: Αδελφός του Β
A. Θεωρία
1. ∆ένδρο
3. Ύψος – Επίπεδα ∆ένδρου
5∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
• ∆ιαδροµή: Ακολουθία κόµβων από µια αφετηρία προς κάποιο απόγονο
• Μήκος ∆ιαδροµής: Πλήθος ακµών της διαδροµής
• Επίπεδο Κόµβου: Μήκος ∆ιαδροµής από τη ρίζα
• Ύψος ∆ένδρου: Μέγιστο επίπεδο Κόµβου
• Βαθµός Κόµβου: Πλήθος Παιδιών Κόµβου
Ύψος ∆ένδρου = 3
Α
ΓΒ
ΖΕ∆
Η
Επίπεδο 0
Επίπεδο 1
Επίπεδο 2
Επίπεδο 3
Παράδειγµα ∆ιαδροµής: Α,Β,Ε,Η
Μήκος ∆ιαδροµής: 3
A. Θεωρία
2. ∆υαδικό ∆ένδρο
1. Ορισµός ∆υαδικού ∆ένδρου
6∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Επιπλέον ορισµοί :
• ∆υαδικό ∆ένδρο: ∆ένδρο που κάθε κορυφή έχει το πολύ δύο παιδιά.
• Πλήρες ∆υαδικό ∆ένδρο: ∆υαδικό ∆ένδρο στο οποίο:
• Όλα τα επίπεδα εκτός ίσως από το τελευταίο έχουν όλους τους δυνατούς κόµβους.
• Στο τελευταίο επίπεδο οι κόµβοι είναι «όσο το δυνατόν αριστερά»
∆υαδικό ∆ένδρο
Όχι Πλήρες
∆υαδικό ∆ένδρο
Όχι Πλήρες
Πλήρες ∆υαδικό ∆ένδρο
Απόδειξη:
Καταµετράµε τις κορυφές σε ένα δυαδικό δένδρο:
• Στο επίπεδο 0 έχουµε το πολύ 2 κορυφές
• Στο επίπεδο 1 έχουµε το πολύ 2 κορυφές
• …
• Στο επίπεδο H έχουµε το πολύ 2 κορυφές (φύλλα)
Συνεπώς συνολικά οι κορυφές είναι το πολύ:
2 2 ⋯ 2
2 1
2 1
2 1
A. Θεωρία
2. ∆υαδικό ∆ένδρο
2. Ιδιότητες των ∆υαδικών ∆ένδρων
7∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Ιδιότητα 1:
• Ένα δυαδικό δένδρο ύψους H έχει το πολύ n=2H+1-1 κόµβους
Ιδιότητα 2:
• Σε ένα πλήρες δυαδικό δένδρο n κόµβων, ισχύει για το ύψος H ότι log(n+1)-1 ≤ H ≤ logn
Απόδειξη:
Οµοίως µε την προηγούµενη απόδειξη, µόνο που στο τελευταίο επίπεδο έχουµε:
• Το πολύ 2H κόµβους άρα συνολικά n 2 1	 ⇒ n 1 2 ⇒ log n 1 log 2 ⇒ log n 1
1 ⇒ log n 1 1
• Τουλάχιστον ένα κόµβο: n 2 1 1 ⇒ n 2 ⇒ log n log 2 ⇒ log n Η ⇒ Η log	n
A. Θεωρία
2. ∆υαδικό ∆ένδρο
3. Βασικές Πράξεις
8∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Οι βασικές πράξεις σε ένα δένδρο είναι:
• Αρχικοποίηση του δένδρου (init)
• Εισαγωγή ενός στοιχείου στο δένδρο (insert)
• ∆ιαγραφή ενός στοιχείου από το δένδρο (delete)
• Έλεγχος αν το δένδρο είναι άδειο (empty)
• Περιεχόµενο ενός κόµβου του δένδρου (data)
• ∆ιαπέραση του δένδρου (traverse)
Υπάρχουν δύο υλοποιήσεις:
• Με δείκτες
• Την ονοµάζουµε «δυναµική αναπαράσταση»
• Με πίνακα
• Την ονοµάζουµε «συνεχόµενη αναπαράσταση»
Σηµαντική Παρατήρηση: Υπάρχουν αρκετές δευτερεύουσες πράξεις ή ακόµη και πράξεις που
διαµορφώνουµε κατά περίπτωση, µιας και το δένδρο είναι µια πολύπλοκή και εξαιρετικά χρήσιµη
δοµή δεδοµένων. Οι δευτερεύουσες πράξεις καθορίζονται συνήθως από ειδικές περιπτώσεις
δένδρων (τα οποία θα δούµε σε επόµενα µαθήµατα) όπως τα ∆υαδικά ∆ένδρα Αναζήτησης, τα
∆ένδρα-Σωροί, τα AVL δένδρα, ή τα Β+-δένδρα.
A. Θεωρία
2. ∆υαδικό ∆ένδρο
4. Συνεχόµενη Αναπαράσταση
9∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Στην Συνεχόµενη Αναπαράσταση ∆υαδικού ∆ένδρου θα χρησιµοποιήσουµε:
• Έναν πίνακα από κόµβους µεγέθους 2 1 (data), έναν ακέραιο H (height)
Θα ισχύσει η εξής σύµβαση:
• Το αριστερό παιδί του κόµβου θα βρίσκεται στη θέση 2 ∗ 1
• Το δεξί παιδί του κόµβου θα βρίσκεται στη θέση 2 ∗ 2
• Άρα ο γονέας του κόµβου στη θέση 	θα βρίσκεται στη θέση 1 	DIV	2	
Π.χ. για το ακόλουθο δένδρο:
1. Υπολογίζουµε το ύψος
2. Νοητά Συµπληρώνουµε τους
κενούς κόµβους
3. Συµπληρώνουµε τον πίνακα
κατά επίπεδα
(θα έχει 23+1-1=15 θέσεις)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Α Β Γ ∆ Ε Ζ Ηdata =
0
1 2
3 4
5
6
7 8 9 10 11 12 13 14
A. Θεωρία
2. ∆υαδικό ∆ένδρο
5. ∆υναµική Αναπαράσταση
10∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Στην δεύτερη υλοποίηση (δυναµική αναπαράσταση) θα χρησιµοποιήσουµε:
• Ο κόµβος θα αποτελείται από τα δεδοµένα (data) και δύο δείκτες:
• Έναν στο αριστερό παιδί (left)
• Έναν στο δεξί παιδί (right)
• Ένας δείκτης θα είναι η ρίζα του δένδρου (συνηθίζεται να ονοµάζεται root)
Π.χ. για το ακόλουθο δένδρο:
data
left
A
right
data
left
B
right
data
left
Γ
right
data
left
∆
right
data
left
Ε
right
data
left
Ζ
right
Παρατήρηση: Θέτουµε τον αντίστοιχο δείκτη (left ή right) ίσο µε NULL για να δείξουµε ότι ο κόµβος δεν έχει
αριστερό (ή δεξί παιδί).
root
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
1. Υλοποίηση σε C: ∆ηλώσεις
11∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Οι δηλώσεις σε C είναι οι ακόλουθες:
• Ο κόµβος του δένδρου είναι µία δοµή (struct) µε τα εξής στοιχεία:
• Το data µέρος του κόµβου (σε τύπο δεδοµένων που ορίζουµε).
• Τους δείκτες left και right που δείχνουν το αριστερό και το δεξί παιδί του κόµβου.
typedef int elem; /* typos dedomenwn dendrou*/
struct node{ /* Typos komvou dendrou */
elem data; /* dedomena */
struct node *left; /* aristero paidi */
struct node *right; /* deksi paidi */
};
typedef struct node TREE_NODE; /* Sinwnimo tou komvou dendrou */
typedef struct node *TREE_PTR; /* Sinwnimo tou deikti komvou */
Το δένδρο θα είναι ένας δείκτης σε κόµβο δένδρου (θα δηλώνεται στη main).
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
2. Υλοποίηση σε C: Αρχικοποίηση ∆ένδρου
12∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Η αρχικοποίηση γίνεται θέτοντας τον δείκτη δένδρου ίσο µε NULL
/* TR_init(): arxikopoiei to dendro */
void TR_init(TREE_PTR *root)
{
*root=NULL;
}
Προσοχή:
• Πάντα προτού ξεκινάµε την χρήση του δένδρου θα πρέπει να καλούµε µία φορά αυτήν τη
συνάρτηση!
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
3. Υλοποίηση σε C: Έλεγχος – Άδειο ∆ένδρο
13∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Ο έλεγχος αν το δένδρο είναι κενό, γίνεται βλέποντας αν ο δείκτης δένδρου είναι ίσος µε NULL.
/* TR_empty(): epistrefei TRUE/FALSE
* analoga me to an to dendro einai adeio */
int TR_empty(TREE_PTR root)
{
return root == NULL;
}
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
4. Υλοποίηση σε C: Περιεχόµενο Κόµβου
14∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Η συνάρτηση επιστρέφει το περιεχόµενο (τα δεδοµένα) ενός κόµβου.
/* TR_data(): epistrefei ta dedomena tou komvou
pou deixnei o deiktis p */
elem TR_data(TREE_PTR p)
{
return p->data;
}
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
5. Υλοποίηση σε C: Εισαγωγή ως Ρίζα
15∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Η συνάρτηση «εισαγωγή ως ρίζα» εισάγει έναν νέο κόµβο ως ρίζα του δένδρου:
1. ∆ηµιουργεί τον νέο κόµβο και θέτει τα δεδοµένα σε αυτόν
2. Θέτει τον δείκτη ρίζας να δείχνει στον κόµβο αυτόν
∆ηµιουργία της ρίζας µε δεδοµένα «5»
data
left
5
right
ΠΡΙΝ
root
ΜΕΤΑ
root
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
5. Υλοποίηση σε C: Εισαγωγή ως Ρίζα
16∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
/* TR_insert_root(): Eisagei to stoixeio x
sti riza tou dendrou */
int TR_insert_root(TREE_PTR *root,elem x)
{
TREE_PTR newnode;
if (*root!=NULL)
return FALSE;
newnode=(TREE_NODE *)malloc(sizeof(TREE_NODE));
if (!newnode)
{
printf("Adynamia desmeusis mnimis");
return FALSE;
}
newnode->data=x;
newnode->left=NULL;
newnode->right=NULL;
*root=newnode;
return TRUE;
}
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
6. Υλοποίηση σε C: Εισαγωγή ως Αριστερό Παιδί
17∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Η συνάρτηση «εισαγωγή ως αριστερό παιδί» εισάγει έναν νέο κόµβο ως αριστερό παιδί:
1. ∆ηµιουργεί τον νέο κόµβο και θέτει τα δεδοµένα σε αυτόν
2. Θέτει αριστερό παιδί του τρέχοντος κόµβου ίσο µε τον νέο κόµβο
1 newnode
ΕΙΣΑΓΩΓΗ του «7» ως αριστερό παιδί του κόµβου 2»
data
left
5
right
data
left
2
right
data
left
4
right
data
left
1
right
node
data
left
7
right
2 Node->left=newnode
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
6. Υλοποίηση σε C: Εισαγωγή ως Αριστερό Παιδί
18∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
/* TR_insert_left(): Eisagei to stoixeio x
ws aristero paidi tou node */
int TR_insert_left(TREE_PTR node,elem x)
{
TREE_PTR newnode;
if (node->left!=NULL)
return FALSE;
newnode=(TREE_NODE *)malloc(sizeof(TREE_NODE));
if (!newnode)
{
printf("Adynamia desmeusis mnimis");
return FALSE;
}
newnode->data=x;
newnode->left=NULL;
newnode->right=NULL;
node->left=newnode;
return TRUE;
}
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
7. Υλοποίηση σε C: Εισαγωγή ως ∆εξί Παιδί
19∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Η συνάρτηση «εισαγωγή ως δεξί παιδί» εισάγει έναν νέο κόµβο ως δεξί παιδί:
1. ∆ηµιουργεί τον νέο κόµβο και θέτει τα δεδοµένα σε αυτόν
2. Θέτει δεξί παιδί του τρέχοντος κόµβου ίσο µε τον νέο κόµβο
1 newnode
ΕΙΣΑΓΩΓΗ του «7» ως αριστερό παιδί του κόµβου 4»
data
left
5
right
data
left
2
right
data
left
4
right
data
left
1
right
node
data
left
7
right
2 node->right=newnode
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
7. Υλοποίηση σε C: Εισαγωγή ως ∆εξί Παιδί
20∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
/* TR_insert_right(): Eisagei to stoixeio x
ws deksi paidi tou node */
int TR_insert_right(TREE_PTR node,elem x)
{
TREE_PTR newnode;
if (node->right!=NULL)
return FALSE;
newnode=(TREE_NODE *)malloc(sizeof(TREE_NODE));
if (!newnode)
{
printf("Adynamia desmeusis mnimis");
return FALSE;
}
newnode->data=x;
newnode->left=NULL;
newnode->right=NULL;
node->right=newnode;
return TRUE;
}
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
8. Υλοποίηση σε C: ∆ιαγραφή της ρίζας
21∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Η συνάρτηση δέχεται ως όρισµα τη ρίζα ενός δένδρου:
1. Ελέγχει ότι δεν έχει παιδία.
2. ∆ιαγράφει τον κόµβο.
3. Θέτει τη ρίζα ίση µε NULL
∆ΙΑΓΡΑΦΗ της ρίζας του δένδρου
data
left
5
right
ΠΡΙΝ
root
ΜΕΤΑ
root
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
8. Υλοποίηση σε C: ∆ιαγραφή της ρίζας
22∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
/* TR_delete_root(): Diagrafei ti riza enos
dentrou efoson den exei paidia */
int TR_delete_root(TREE_PTR *root, elem *x)
{
if ((*root)->left!=NULL || (*root)->right!=NULL)
return FALSE;
*x=(*root)->data;
free(*root);
*root=NULL;
return TRUE;
}
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
9. Υλοποίηση σε C: ∆ιαγραφή αριστερού παιδιού κόµβου
23∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Η συνάρτηση δέχεται ως όρισµα έναν κόµβο (στον οποίο δείχνει ο parent) και διαγράφει το
αριστερό παιδί του:
1. Ελέγχει ότι το αριστερό παιδί δεν έχει παιδιά.
2. ∆ιαγράφει το αριστερό παιδί.
3. Θέτει τον δείκτη left του κόµβου parent ίσο µε NULL.
∆ΙΑΓΡΑΦΗ του αριστερού παιδιού του
κόµβου «2»
1 delete(parent->left)
data
left
5
right
data
left
2
right
data
left
4
right
data
left
1
right
parent
data
left
7
right
2 parent->left=NULL
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
9. Υλοποίηση σε C: ∆ιαγραφή αριστερού παιδιού κόµβου
24∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
/* TR_delete_left(): Diagrafei to aristero paidi
tou komvou parent (efoson den exei paidia) */
int TR_delete_left(TREE_PTR parent, elem *x)
{
TREE_PTR current;
if (parent->left==NULL)
return FALSE;
current=parent->left;
if (current->left!=NULL || current->right!=NULL)
return FALSE;
*x=current->data;
free(current);
parent->left=NULL;
return TRUE;
}
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
10. Υλοποίηση σε C: ∆ιαγραφή δεξιού παιδιού κόµβου
25∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Η συνάρτηση δέχεται ως όρισµα έναν κόµβο (στον οποίο δείχνει ο parent) και διαγράφει το δεξί
παιδί του:
1. Ελέγχει ότι το δεξί παιδί δεν έχει παιδιά.
2. ∆ιαγράφει το δεξί παιδί.
3. Θέτει τον δείκτη right του κόµβου parent ίσο µε NULL.
parent
2 parent->right=NULL
1 delete(parent->right)
data
left
5
right
data
left
2
right
data
left
4
right
data
left
1
right
data
left
6
right
data
left
7
right
∆ΙΑΓΡΑΦΗ του δεξιού παιδιού του
κόµβου «4»
A. Θεωρία
3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση
10. Υλοποίηση σε C: ∆ιαγραφή δεξιού παιδιού κόµβου
26∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
/* TR_delete_right(): Diagrafei to deksi paidi
tou komvou node (efoson den exei paidia) */
int TR_delete_right(TREE_PTR parent, elem *x)
{
TREE_PTR current;
if (parent->right==NULL)
return FALSE;
current=parent->right;
if (current->left!=NULL || current->right!=NULL)
return FALSE;
*x=current->data;
free(current);
parent->right=NULL;
return TRUE;
}
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
1. Γενικά
27∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Οι διαπεράσεις είναι µεθοδολογίες για να επισκεφθούµε όλες τις κορυφές ενός ∆υαδικού
∆ένδρου:
Εξετάζουµε:
Την προδιατεταγµένη διαπέραση (preorder). Που εκτελεί τη σειρά επίσκεψης:
Τρέχουσα Κορυφή
Αριστερό Υποδένδρο
∆εξί Υποδένδρο
Την ενδοδιατεταγµένη διαπέραση (inorder). Που εκτελεί τη σειρά επίσκεψης:
Αριστερό Υποδένδρο
Τρέχουσα Κορυφή
∆εξί Υποδένδρο
Την µεταδιατεταγµένη ∆ιαπέραση (postorder). Που εκτελεί τη σειρά επίσκεψης:
Αριστερό Υποδένδρο
∆εξί Υποδένδρο
Τρέχουσα Κορυφή
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
2. Υλοποίηση σε C: Προδιατεταγµένη ∆ιαδροµή
28∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
-------------------------------------------------------------
Αλγόριθµος Προδιατεταγµένης ∆ιαδροµής (PRE-ORDER)
Είσοδος: ∆υαδικό ∆ένδρο Τ
Έξοδος: Προδιατεταγµένη ∆ιάσχιση των Κορυφών του Τ
-------------------------------------------------------------
procedure PRE-ORDER(n)
Αν (n≠ΚΕΝΟ)
Εκτύπωση του n
PRE-ORDER(Αριστερό Παιδί της n)
PRE-ORDER(∆εξί Παιδί της n)
Τέλος-Αν
end procedure
n 1 root
2 left 3 right
ΠΡΟ∆ΙΑΤΕΤΑΓΜΕΝΗ
∆ΙΑΠΕΡΑΣΗ
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
2. Υλοποίηση σε C: Προδιατεταγµένη ∆ιαδροµή
29∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Παράδειγµα Εκτέλεσης της Προδιατεταγµένης ∆ιαδροµής στο ακόλουθο δένδρο:
10
146
1975
82
3
1
2
6
7
8
9
3
4
5
Παράγεται η ακολουθία (σειρά επίσκεψης): 10,6,5,2,3,7,8,14,19
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
2. Υλοποίηση σε C: Προδιατεταγµένη ∆ιαδροµή
30∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Εµπειρικός Τρόπος (εκτέλεσης της προδιατεταγµένης διαπέρασης):
• Κατασκευάζω το περίγραµµα και τραβάω γραµµή αριστερά από κάθε κόµβο.
• Έπειτα σαρώνω το περίγραµµα αριστερόστροφα από τη ρίζα και όπου συναντάω γραµµή
καταγράφω τον κόµβο
10
146
1975
82
3 Σειρά επίσκεψης: 10,6,5,2,3,7,8,14,19
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
2. Υλοποίηση σε C: Προδιατεταγµένη ∆ιαδροµή
31∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
/* TR_preorder(): Ektypwsi kata tin
prodiatetagmeni diadromi */
void TR_preorder(TREE_PTR v)
{
if(v!=NULL)
{
TR_print_node(v);
TR_preorder(v->left);
TR_preorder(v->right);
}
}
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
3. Υλοποίηση σε C: Ενδο∆ιατεταγµένη ∆ιαπέραση
32∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
-------------------------------------------------------------
Αλγόριθµος Ενδοδιατεταγµένης ∆ιαδροµής (IN-ORDER)
Είσοδος: ∆υαδικό ∆ένδρο Τ
Έξοδος: Ενδοδιατεταγµένη ∆ιάσχιση των Κορυφών του Τ
-------------------------------------------------------------
procedure IN-ORDER(v)
Αν (v≠ΚΕΝΟ)
IN-ORDER(Αριστερό Παιδί της v)
Εκτύπωση του v
IN-ORDER(∆εξί Παιδί της v)
Τέλος-Αν
end procedure
n 2 root
1 left 3 right
ΕΝ∆Ο∆ΙΑΤΕΤΑΓΜΕΝΗ
∆ΙΑΠΕΡΑΣΗ
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
3. Υλοποίηση σε C: Ενδο∆ιατεταγµένη ∆ιαπέραση
33∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Παράδειγµα Εκτέλεσης της Ενδοδιατεταγµένης ∆ιαδροµής στο ακόλουθο δένδρο:
Παράγεται η ακολουθία (σειρά επίσκεψης): 2,3,5,6,7,8,10,14,19
10
146
1975
82
3
7
4
5
6
8
9
3
1
2
Σηµείωση: Η ακολουθία εµφανίζεται σε αύξουσα σειρά γιατί το δένδρο έχει ειδική µορφή (∆υαδικό ∆ένδρο
Αναζήτησης => Το µελετάµε στο επόµενο µάθηµα)
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
3. Υλοποίηση σε C: Ενδο∆ιατεταγµένη ∆ιαπέραση
34∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Εµπειρικός Τρόπος (εκτέλεσης της ενδοδιατεταγµένης διαπέρασης):
• Κατασκευάζω το περίγραµµα και τραβάω γραµµή κάτω από κάθε κόµβο.
• Έπειτα σαρώνω το περίγραµµα αριστερόστροφα από τη ρίζα και όπου συναντάω γραµµή
καταγράφω τον κόµβο
Σειρά επίσκεψης: 2,3,5,6,7,8,10,14,19
10
146
1975
82
3
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
3. Υλοποίηση σε C: Ενδο∆ιατεταγµένη ∆ιαπέραση
35∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
/* TR_inorder(): Ektypwsi kata tin
endodiatetagmeni diadromi */
void TR_inorder(TREE_PTR v)
{
if(v!=NULL)
{
TR_inorder(v->left);
TR_print_node(v);
TR_inorder(v->right);
}
}
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
5. Υλοποίηση σε C: Μετα∆ιατεταγµένη ∆ιαπέραση
36∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
-------------------------------------------------------------
Αλγόριθµος Μεταδιατεταγµένης ∆ιαδροµής (POST-ORDER)
Είσοδος: ∆υαδικό ∆ένδρο Τ
Έξοδος: Μεταδιατεταγµένη ∆ιάσχιση των Κορυφών του Τ
-------------------------------------------------------------
procedure POST-ORDER(v)
Αν (v≠ΚΕΝΟ)
POST-ORDER(Αριστερό Παιδί της v)
POST-ORDER(∆εξί Παιδί της v)
Εκτύπωση του v
Τέλος-Αν
end procedure
n 3 root
1 left 2 right
ΜΕΤΑ∆ΙΑΤΕΤΑΓΜΕΝΗ
∆ΙΑΠΕΡΑΣΗ
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
4. Υλοποίηση σε C: Μετα∆ιατεταγµένη ∆ιαπέραση
37∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Παράδειγµα Εκτέλεσης της Μεταδιατεταγµένης ∆ιαδροµής στο ακόλουθο δένδρο:
Παράγεται η ακολουθία (σειρά επίσκεψης): 3,2,5,8,7,6,19,14,10
10
146
1975
82
3
9
6
5
4
8
7
3
2
1
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
4. Υλοποίηση σε C: Μετα∆ιατεταγµένη ∆ιαπέραση
38∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
Εµπειρικός Τρόπος (εκτέλεσης της ενδοδιατεταγµένης διαπέρασης):
• Κατασκευάζω το περίγραµµα και τραβάω γραµµή δεξιά από κάθε κόµβο.
• Έπειτα σαρώνω το περίγραµµα αριστερόστροφα από τη ρίζα και όπου συναντάω γραµµή
καταγράφω τον κόµβο
Σειρά επίσκεψης: 3,2,5,8,7,6,19,14,10
10
146
1975
82
3
A. Θεωρία
4. ∆ιαπέραση ∆υαδικών ∆ένδρων
4. Υλοποίηση σε C: Μετα∆ιατεταγµένη ∆ιαπέραση
39∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
/* TR_postorder(): Ektypwsi kata tin
metadiatetagmeni diadromi */
void TR_postorder(TREE_PTR v)
{
if(v!=NULL)
{
TR_postorder(v->left);
TR_postorder(v->right);
TR_print_node(v);
}
}
Β. Ασκήσεις
Εφαρµογή 1: Μελέτη Προγράµµατος
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα
40
Μελετήστε το project tree.dev στο οποίο υλοποιούνται οι βασικές πράξεις των δένδρων που
µελετήσαµε στο µάθηµα. Σε αυτό θα «πατήσουµε» στο επόµενο µάθηµα για να
κατασκευάσουµε τα δυαδικά δένδρα αναζήτησης.

More Related Content

What's hot

ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 1.3 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΜΑΘΗΜΑ 1.3 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΜΑΘΗΜΑ 1.3 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΜΑΘΗΜΑ 1.3 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 2.3
ΠΛΗ30 ΜΑΘΗΜΑ 2.3ΠΛΗ30 ΜΑΘΗΜΑ 2.3
ΠΛΗ30 ΜΑΘΗΜΑ 2.3
Dimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
Dimitris Psounis
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
Dimitris Psounis
 
Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3 Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3
Dimitris Psounis
 
ΠΛΗ10 ΤΕΣΤ 2
ΠΛΗ10 ΤΕΣΤ 2ΠΛΗ10 ΤΕΣΤ 2
ΠΛΗ10 ΤΕΣΤ 2
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Dimitris Psounis
 

What's hot (20)

ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
 
ΠΛΗ10 ΜΑΘΗΜΑ 1.3 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΜΑΘΗΜΑ 1.3 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΜΑΘΗΜΑ 1.3 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΜΑΘΗΜΑ 1.3 (ΕΚΤΥΠΩΣΗ)
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
 
ΠΛΗ30 ΜΑΘΗΜΑ 2.3
ΠΛΗ30 ΜΑΘΗΜΑ 2.3ΠΛΗ30 ΜΑΘΗΜΑ 2.3
ΠΛΗ30 ΜΑΘΗΜΑ 2.3
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
 
Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3 Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3
 
ΠΛΗ10 ΤΕΣΤ 2
ΠΛΗ10 ΤΕΣΤ 2ΠΛΗ10 ΤΕΣΤ 2
ΠΛΗ10 ΤΕΣΤ 2
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
 

Viewers also liked

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 - ΕΚΤΥΠΩΣΗ
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 - ΕΚΤΥΠΩΣΗΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 - ΕΚΤΥΠΩΣΗ
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 - ΕΚΤΥΠΩΣΗ
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 

Viewers also liked (18)

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 - ΕΚΤΥΠΩΣΗ
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 - ΕΚΤΥΠΩΣΗΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 - ΕΚΤΥΠΩΣΗ
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 - ΕΚΤΥΠΩΣΗ
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΤΕΣΤ 21
ΠΛΗ10 ΤΕΣΤ 21ΠΛΗ10 ΤΕΣΤ 21
ΠΛΗ10 ΤΕΣΤ 21
 
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ (ΕΚΤΥΠΩΣΗ)
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 (ΕΚΤΥΠΩΣΗ)
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
 

Similar to ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6

ΠΛΗ20 ΜΑΘΗΜΑ 6.1
ΠΛΗ20 ΜΑΘΗΜΑ 6.1ΠΛΗ20 ΜΑΘΗΜΑ 6.1
ΠΛΗ20 ΜΑΘΗΜΑ 6.1
Dimitris Psounis
 
ΠΛΗ20 ΜΑΘΗΜΑ 6.3
ΠΛΗ20 ΜΑΘΗΜΑ 6.3ΠΛΗ20 ΜΑΘΗΜΑ 6.3
ΠΛΗ20 ΜΑΘΗΜΑ 6.3
Dimitris Psounis
 
ΠΛΗ20 ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ20 ΔΙΑΓΩΝΙΣΜΑ 2ΠΛΗ20 ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ20 ΔΙΑΓΩΝΙΣΜΑ 2
Dimitris Psounis
 
Συνδυαστική 2019
Συνδυαστική 2019Συνδυαστική 2019
Συνδυαστική 2019
Μάκης Χατζόπουλος
 
Ασκήσεις Στατιστικής Γ' Λυκείου ΕΠΑΛ
Ασκήσεις Στατιστικής Γ' Λυκείου ΕΠΑΛΑσκήσεις Στατιστικής Γ' Λυκείου ΕΠΑΛ
Ασκήσεις Στατιστικής Γ' Λυκείου ΕΠΑΛ
Ρεβέκα Θεοδωροπούλου
 
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 9
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 9ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 9
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 9
Dimitris Psounis
 
ΠΛΗ20 ΤΕΣΤ 28
ΠΛΗ20 ΤΕΣΤ 28ΠΛΗ20 ΤΕΣΤ 28
ΠΛΗ20 ΤΕΣΤ 28
Dimitris Psounis
 
ΠΛΗ31 ΤΕΣΤ 8
ΠΛΗ31 ΤΕΣΤ 8ΠΛΗ31 ΤΕΣΤ 8
ΠΛΗ31 ΤΕΣΤ 8
Dimitris Psounis
 
αναπαράσταση αλγορίθμων και δεδομένων
αναπαράσταση αλγορίθμων και δεδομένωναναπαράσταση αλγορίθμων και δεδομένων
αναπαράσταση αλγορίθμων και δεδομένων
MariaProGr
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
Dimitris Psounis
 
ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1
Dimitris Psounis
 
ALGEBRA B
ALGEBRA B ALGEBRA B
Them mat gen_c_hmer_no_1106
Them mat gen_c_hmer_no_1106Them mat gen_c_hmer_no_1106
Them mat gen_c_hmer_no_1106
aristos arestos
 
Them mat gen_c_hmer_no_1106
Them mat gen_c_hmer_no_1106Them mat gen_c_hmer_no_1106
Them mat gen_c_hmer_no_1106
ireportergr
 
Pagkypries eksetaseis 2019
Pagkypries eksetaseis 2019Pagkypries eksetaseis 2019
Pagkypries eksetaseis 2019
Christos Loizos
 
Θέματα ΟΕΦΕ 2001 2015 γενικής παιδείας σε word
Θέματα ΟΕΦΕ 2001 2015 γενικής παιδείας σε wordΘέματα ΟΕΦΕ 2001 2015 γενικής παιδείας σε word
Θέματα ΟΕΦΕ 2001 2015 γενικής παιδείας σε word
Μάκης Χατζόπουλος
 

Similar to ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (20)

ΠΛΗ20 ΜΑΘΗΜΑ 6.1
ΠΛΗ20 ΜΑΘΗΜΑ 6.1ΠΛΗ20 ΜΑΘΗΜΑ 6.1
ΠΛΗ20 ΜΑΘΗΜΑ 6.1
 
ΠΛΗ20 ΜΑΘΗΜΑ 6.3
ΠΛΗ20 ΜΑΘΗΜΑ 6.3ΠΛΗ20 ΜΑΘΗΜΑ 6.3
ΠΛΗ20 ΜΑΘΗΜΑ 6.3
 
ΠΛΗ20 ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ20 ΔΙΑΓΩΝΙΣΜΑ 2ΠΛΗ20 ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ20 ΔΙΑΓΩΝΙΣΜΑ 2
 
Συνδυαστική 2019
Συνδυαστική 2019Συνδυαστική 2019
Συνδυαστική 2019
 
Ασκήσεις Στατιστικής Γ' Λυκείου ΕΠΑΛ
Ασκήσεις Στατιστικής Γ' Λυκείου ΕΠΑΛΑσκήσεις Στατιστικής Γ' Λυκείου ΕΠΑΛ
Ασκήσεις Στατιστικής Γ' Λυκείου ΕΠΑΛ
 
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 9
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 9ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 9
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 9
 
ΠΛΗ20 ΤΕΣΤ 28
ΠΛΗ20 ΤΕΣΤ 28ΠΛΗ20 ΤΕΣΤ 28
ΠΛΗ20 ΤΕΣΤ 28
 
ΠΛΗ31 ΤΕΣΤ 17
ΠΛΗ31 ΤΕΣΤ 17ΠΛΗ31 ΤΕΣΤ 17
ΠΛΗ31 ΤΕΣΤ 17
 
ΠΛΗ31 ΤΕΣΤ 8
ΠΛΗ31 ΤΕΣΤ 8ΠΛΗ31 ΤΕΣΤ 8
ΠΛΗ31 ΤΕΣΤ 8
 
αναπαράσταση αλγορίθμων και δεδομένων
αναπαράσταση αλγορίθμων και δεδομένωναναπαράσταση αλγορίθμων και δεδομένων
αναπαράσταση αλγορίθμων και δεδομένων
 
ΠΛΗ10 ΤΕΣΤ 27
ΠΛΗ10 ΤΕΣΤ 27ΠΛΗ10 ΤΕΣΤ 27
ΠΛΗ10 ΤΕΣΤ 27
 
ΠΛΗ31 ΤΕΣΤ 16
ΠΛΗ31 ΤΕΣΤ 16ΠΛΗ31 ΤΕΣΤ 16
ΠΛΗ31 ΤΕΣΤ 16
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
 
ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1
 
ALGEBRA B
ALGEBRA B ALGEBRA B
ALGEBRA B
 
Them mat gen_c_hmer_no_1106
Them mat gen_c_hmer_no_1106Them mat gen_c_hmer_no_1106
Them mat gen_c_hmer_no_1106
 
Them mat gen_c_hmer_no_1106
Them mat gen_c_hmer_no_1106Them mat gen_c_hmer_no_1106
Them mat gen_c_hmer_no_1106
 
Pagkypries eksetaseis 2019
Pagkypries eksetaseis 2019Pagkypries eksetaseis 2019
Pagkypries eksetaseis 2019
 
Plh20 test 21
Plh20 test 21Plh20 test 21
Plh20 test 21
 
Θέματα ΟΕΦΕ 2001 2015 γενικής παιδείας σε word
Θέματα ΟΕΦΕ 2001 2015 γενικής παιδείας σε wordΘέματα ΟΕΦΕ 2001 2015 γενικής παιδείας σε word
Θέματα ΟΕΦΕ 2001 2015 γενικής παιδείας σε word
 

More from Dimitris Psounis

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Dimitris Psounis
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
Dimitris Psounis
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Dimitris Psounis
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
Dimitris Psounis
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
Dimitris Psounis
 

More from Dimitris Psounis (20)

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
 
ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33
 
ΠΛΗ31 ΤΕΣΤ 32
ΠΛΗ31 ΤΕΣΤ 32ΠΛΗ31 ΤΕΣΤ 32
ΠΛΗ31 ΤΕΣΤ 32
 
ΠΛΗ31 ΤΕΣΤ 31
ΠΛΗ31 ΤΕΣΤ 31ΠΛΗ31 ΤΕΣΤ 31
ΠΛΗ31 ΤΕΣΤ 31
 
ΠΛΗ31 ΤΕΣΤ 30
ΠΛΗ31 ΤΕΣΤ 30ΠΛΗ31 ΤΕΣΤ 30
ΠΛΗ31 ΤΕΣΤ 30
 
ΠΛΗ10 ΤΕΣΤ 35
ΠΛΗ10 ΤΕΣΤ 35ΠΛΗ10 ΤΕΣΤ 35
ΠΛΗ10 ΤΕΣΤ 35
 
ΠΛΗ10 ΤΕΣΤ 34
ΠΛΗ10 ΤΕΣΤ 34ΠΛΗ10 ΤΕΣΤ 34
ΠΛΗ10 ΤΕΣΤ 34
 

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

  • 1. ∆οµές ∆εδοµένων σε C Μάθηµα 6: ∆υαδικά ∆ένδρα ∆ηµήτρης Ψούνης
  • 2. Περιεχόµενα Μαθήµατος Α. Θεωρία 1. ∆ένδρο 1. Ορισµός ∆ένδρου 2. Οικογενειακές Σχέσεις 3. Ύψος – Επίπεδα ∆ένδρου 2. ∆υαδικό ∆ένδρο 1. Ορισµός ∆υαδικού ∆ένδρου 2. Ιδιότητες ∆υαδικών ∆ένδρων 3. Βασικές Πράξεις 4. Συνεχόµενη Αναπαράσταση 5. ∆υαδική Αναπαράσταση 2∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 1. Υλοποίηση σε C: ∆ηλώσεις 2. Υλοποίηση σε C: Αρχικοποίηση ∆ένδρου 3. Υλοποίηση σε C: Έλεγχοι – Άδειο ∆ένδρο 4. Υλοποίηση σε C: Περιεχόµενο Κόµβου 5. Υλοποίηση σε C: Εισαγωγή ως Ρίζα 6. Υλοποίηση σε C: Εισαγωγή Αριστερού Παιδιού 7. Υλοποίηση σε C: Εισαγωγή ∆εξιού Παιδιού 8. Υλοποίηση σε C: ∆ιαγραφή Ρίζας 9. Υλοποίηση σε C: ∆ιαγραφή Αριστερού Παιδιού 10. Υλοποίηση σε C: ∆ιαγραφή ∆εξιού Παιδιού 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 1. Υλοποίηση σε C: Προδιατεταγµένη ∆ιαπέραση 2. Υλοποίηση σε C: Ενδοδιατεταγµένη ∆ιαπέραση 3. Υλοποίηση σε C: Μεταδιατεταγµένη ∆ιαπέραση Β. Ασκήσεις
  • 3. A. Θεωρία 1. ∆ένδρο 1. Ορισµός ∆ένδρου 3∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Το «∆ένδρο» είναι µια µη γραµµική, ιεραρχική δοµή δεδοµένων στην οποία: • Αποτελείται από κόµβους (κορυφές) και ακµές (πλευρές) που οµοιάζουν µε ένα (ανάποδο) δένδρο. Οι κόµβοι είναι τριών ειδών: • Η ρίζα είναι ο µοναδικός κόµβος από τον οποίο µόνο ξεκινούν ακµές • Οι εσωτερικοί κόµβοι (ή µη τερµατικοί) στις οποίες καταλήγουν και ξεκινούν ακµές. • Τα φύλλα (ή τερµατικοί κόµβοι) στα οποία καταλήγει µόνο µία ακµή. Παράδειγµα: • Ρίζα: Α • Εσωτερικοί Κόµβοι: Β,Γ,Ε • Φύλλα: ∆,Η,Ζ Παρατηρήσεις: • Το δένδρο χωρίς κόµβους λέγεται «κενό δένδρο» (null tree). • Ένας εσωτερικός κόµβος έχει τουλάχιστον ένα παιδί . • Τα φύλλα δεν έχουν παιδιά.
  • 4. A. Θεωρία 1. ∆ένδρο 2. Οικογενειακές Σχέσεις στα ∆ένδρα 4∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Σε ένα δένδρο ορίζονται «οικογενειακές σχέσεις» των κόµβων. Στο παράδειγµα µελετάµε την οικογένεια του κόµβου Β: Α ΓΒ ΖΕ∆ Η Υποδένδρο µε ρίζα το Β ∆: Αριστερό Παιδί του Β Ε: ∆εξί Παιδί του Β Α: Πατέρας της Β (Πρόγονος του Β) ∆,Ε,Η: Απόγονοι του Β Γ: Αδελφός του Β
  • 5. A. Θεωρία 1. ∆ένδρο 3. Ύψος – Επίπεδα ∆ένδρου 5∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα • ∆ιαδροµή: Ακολουθία κόµβων από µια αφετηρία προς κάποιο απόγονο • Μήκος ∆ιαδροµής: Πλήθος ακµών της διαδροµής • Επίπεδο Κόµβου: Μήκος ∆ιαδροµής από τη ρίζα • Ύψος ∆ένδρου: Μέγιστο επίπεδο Κόµβου • Βαθµός Κόµβου: Πλήθος Παιδιών Κόµβου Ύψος ∆ένδρου = 3 Α ΓΒ ΖΕ∆ Η Επίπεδο 0 Επίπεδο 1 Επίπεδο 2 Επίπεδο 3 Παράδειγµα ∆ιαδροµής: Α,Β,Ε,Η Μήκος ∆ιαδροµής: 3
  • 6. A. Θεωρία 2. ∆υαδικό ∆ένδρο 1. Ορισµός ∆υαδικού ∆ένδρου 6∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Επιπλέον ορισµοί : • ∆υαδικό ∆ένδρο: ∆ένδρο που κάθε κορυφή έχει το πολύ δύο παιδιά. • Πλήρες ∆υαδικό ∆ένδρο: ∆υαδικό ∆ένδρο στο οποίο: • Όλα τα επίπεδα εκτός ίσως από το τελευταίο έχουν όλους τους δυνατούς κόµβους. • Στο τελευταίο επίπεδο οι κόµβοι είναι «όσο το δυνατόν αριστερά» ∆υαδικό ∆ένδρο Όχι Πλήρες ∆υαδικό ∆ένδρο Όχι Πλήρες Πλήρες ∆υαδικό ∆ένδρο
  • 7. Απόδειξη: Καταµετράµε τις κορυφές σε ένα δυαδικό δένδρο: • Στο επίπεδο 0 έχουµε το πολύ 2 κορυφές • Στο επίπεδο 1 έχουµε το πολύ 2 κορυφές • … • Στο επίπεδο H έχουµε το πολύ 2 κορυφές (φύλλα) Συνεπώς συνολικά οι κορυφές είναι το πολύ: 2 2 ⋯ 2 2 1 2 1 2 1 A. Θεωρία 2. ∆υαδικό ∆ένδρο 2. Ιδιότητες των ∆υαδικών ∆ένδρων 7∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Ιδιότητα 1: • Ένα δυαδικό δένδρο ύψους H έχει το πολύ n=2H+1-1 κόµβους Ιδιότητα 2: • Σε ένα πλήρες δυαδικό δένδρο n κόµβων, ισχύει για το ύψος H ότι log(n+1)-1 ≤ H ≤ logn Απόδειξη: Οµοίως µε την προηγούµενη απόδειξη, µόνο που στο τελευταίο επίπεδο έχουµε: • Το πολύ 2H κόµβους άρα συνολικά n 2 1 ⇒ n 1 2 ⇒ log n 1 log 2 ⇒ log n 1 1 ⇒ log n 1 1 • Τουλάχιστον ένα κόµβο: n 2 1 1 ⇒ n 2 ⇒ log n log 2 ⇒ log n Η ⇒ Η log n
  • 8. A. Θεωρία 2. ∆υαδικό ∆ένδρο 3. Βασικές Πράξεις 8∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Οι βασικές πράξεις σε ένα δένδρο είναι: • Αρχικοποίηση του δένδρου (init) • Εισαγωγή ενός στοιχείου στο δένδρο (insert) • ∆ιαγραφή ενός στοιχείου από το δένδρο (delete) • Έλεγχος αν το δένδρο είναι άδειο (empty) • Περιεχόµενο ενός κόµβου του δένδρου (data) • ∆ιαπέραση του δένδρου (traverse) Υπάρχουν δύο υλοποιήσεις: • Με δείκτες • Την ονοµάζουµε «δυναµική αναπαράσταση» • Με πίνακα • Την ονοµάζουµε «συνεχόµενη αναπαράσταση» Σηµαντική Παρατήρηση: Υπάρχουν αρκετές δευτερεύουσες πράξεις ή ακόµη και πράξεις που διαµορφώνουµε κατά περίπτωση, µιας και το δένδρο είναι µια πολύπλοκή και εξαιρετικά χρήσιµη δοµή δεδοµένων. Οι δευτερεύουσες πράξεις καθορίζονται συνήθως από ειδικές περιπτώσεις δένδρων (τα οποία θα δούµε σε επόµενα µαθήµατα) όπως τα ∆υαδικά ∆ένδρα Αναζήτησης, τα ∆ένδρα-Σωροί, τα AVL δένδρα, ή τα Β+-δένδρα.
  • 9. A. Θεωρία 2. ∆υαδικό ∆ένδρο 4. Συνεχόµενη Αναπαράσταση 9∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Στην Συνεχόµενη Αναπαράσταση ∆υαδικού ∆ένδρου θα χρησιµοποιήσουµε: • Έναν πίνακα από κόµβους µεγέθους 2 1 (data), έναν ακέραιο H (height) Θα ισχύσει η εξής σύµβαση: • Το αριστερό παιδί του κόµβου θα βρίσκεται στη θέση 2 ∗ 1 • Το δεξί παιδί του κόµβου θα βρίσκεται στη θέση 2 ∗ 2 • Άρα ο γονέας του κόµβου στη θέση θα βρίσκεται στη θέση 1 DIV 2 Π.χ. για το ακόλουθο δένδρο: 1. Υπολογίζουµε το ύψος 2. Νοητά Συµπληρώνουµε τους κενούς κόµβους 3. Συµπληρώνουµε τον πίνακα κατά επίπεδα (θα έχει 23+1-1=15 θέσεις) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Α Β Γ ∆ Ε Ζ Ηdata = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 10. A. Θεωρία 2. ∆υαδικό ∆ένδρο 5. ∆υναµική Αναπαράσταση 10∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Στην δεύτερη υλοποίηση (δυναµική αναπαράσταση) θα χρησιµοποιήσουµε: • Ο κόµβος θα αποτελείται από τα δεδοµένα (data) και δύο δείκτες: • Έναν στο αριστερό παιδί (left) • Έναν στο δεξί παιδί (right) • Ένας δείκτης θα είναι η ρίζα του δένδρου (συνηθίζεται να ονοµάζεται root) Π.χ. για το ακόλουθο δένδρο: data left A right data left B right data left Γ right data left ∆ right data left Ε right data left Ζ right Παρατήρηση: Θέτουµε τον αντίστοιχο δείκτη (left ή right) ίσο µε NULL για να δείξουµε ότι ο κόµβος δεν έχει αριστερό (ή δεξί παιδί). root
  • 11. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 1. Υλοποίηση σε C: ∆ηλώσεις 11∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Οι δηλώσεις σε C είναι οι ακόλουθες: • Ο κόµβος του δένδρου είναι µία δοµή (struct) µε τα εξής στοιχεία: • Το data µέρος του κόµβου (σε τύπο δεδοµένων που ορίζουµε). • Τους δείκτες left και right που δείχνουν το αριστερό και το δεξί παιδί του κόµβου. typedef int elem; /* typos dedomenwn dendrou*/ struct node{ /* Typos komvou dendrou */ elem data; /* dedomena */ struct node *left; /* aristero paidi */ struct node *right; /* deksi paidi */ }; typedef struct node TREE_NODE; /* Sinwnimo tou komvou dendrou */ typedef struct node *TREE_PTR; /* Sinwnimo tou deikti komvou */ Το δένδρο θα είναι ένας δείκτης σε κόµβο δένδρου (θα δηλώνεται στη main).
  • 12. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 2. Υλοποίηση σε C: Αρχικοποίηση ∆ένδρου 12∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Η αρχικοποίηση γίνεται θέτοντας τον δείκτη δένδρου ίσο µε NULL /* TR_init(): arxikopoiei to dendro */ void TR_init(TREE_PTR *root) { *root=NULL; } Προσοχή: • Πάντα προτού ξεκινάµε την χρήση του δένδρου θα πρέπει να καλούµε µία φορά αυτήν τη συνάρτηση!
  • 13. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 3. Υλοποίηση σε C: Έλεγχος – Άδειο ∆ένδρο 13∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Ο έλεγχος αν το δένδρο είναι κενό, γίνεται βλέποντας αν ο δείκτης δένδρου είναι ίσος µε NULL. /* TR_empty(): epistrefei TRUE/FALSE * analoga me to an to dendro einai adeio */ int TR_empty(TREE_PTR root) { return root == NULL; }
  • 14. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 4. Υλοποίηση σε C: Περιεχόµενο Κόµβου 14∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Η συνάρτηση επιστρέφει το περιεχόµενο (τα δεδοµένα) ενός κόµβου. /* TR_data(): epistrefei ta dedomena tou komvou pou deixnei o deiktis p */ elem TR_data(TREE_PTR p) { return p->data; }
  • 15. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 5. Υλοποίηση σε C: Εισαγωγή ως Ρίζα 15∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Η συνάρτηση «εισαγωγή ως ρίζα» εισάγει έναν νέο κόµβο ως ρίζα του δένδρου: 1. ∆ηµιουργεί τον νέο κόµβο και θέτει τα δεδοµένα σε αυτόν 2. Θέτει τον δείκτη ρίζας να δείχνει στον κόµβο αυτόν ∆ηµιουργία της ρίζας µε δεδοµένα «5» data left 5 right ΠΡΙΝ root ΜΕΤΑ root
  • 16. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 5. Υλοποίηση σε C: Εισαγωγή ως Ρίζα 16∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα /* TR_insert_root(): Eisagei to stoixeio x sti riza tou dendrou */ int TR_insert_root(TREE_PTR *root,elem x) { TREE_PTR newnode; if (*root!=NULL) return FALSE; newnode=(TREE_NODE *)malloc(sizeof(TREE_NODE)); if (!newnode) { printf("Adynamia desmeusis mnimis"); return FALSE; } newnode->data=x; newnode->left=NULL; newnode->right=NULL; *root=newnode; return TRUE; }
  • 17. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 6. Υλοποίηση σε C: Εισαγωγή ως Αριστερό Παιδί 17∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Η συνάρτηση «εισαγωγή ως αριστερό παιδί» εισάγει έναν νέο κόµβο ως αριστερό παιδί: 1. ∆ηµιουργεί τον νέο κόµβο και θέτει τα δεδοµένα σε αυτόν 2. Θέτει αριστερό παιδί του τρέχοντος κόµβου ίσο µε τον νέο κόµβο 1 newnode ΕΙΣΑΓΩΓΗ του «7» ως αριστερό παιδί του κόµβου 2» data left 5 right data left 2 right data left 4 right data left 1 right node data left 7 right 2 Node->left=newnode
  • 18. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 6. Υλοποίηση σε C: Εισαγωγή ως Αριστερό Παιδί 18∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα /* TR_insert_left(): Eisagei to stoixeio x ws aristero paidi tou node */ int TR_insert_left(TREE_PTR node,elem x) { TREE_PTR newnode; if (node->left!=NULL) return FALSE; newnode=(TREE_NODE *)malloc(sizeof(TREE_NODE)); if (!newnode) { printf("Adynamia desmeusis mnimis"); return FALSE; } newnode->data=x; newnode->left=NULL; newnode->right=NULL; node->left=newnode; return TRUE; }
  • 19. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 7. Υλοποίηση σε C: Εισαγωγή ως ∆εξί Παιδί 19∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Η συνάρτηση «εισαγωγή ως δεξί παιδί» εισάγει έναν νέο κόµβο ως δεξί παιδί: 1. ∆ηµιουργεί τον νέο κόµβο και θέτει τα δεδοµένα σε αυτόν 2. Θέτει δεξί παιδί του τρέχοντος κόµβου ίσο µε τον νέο κόµβο 1 newnode ΕΙΣΑΓΩΓΗ του «7» ως αριστερό παιδί του κόµβου 4» data left 5 right data left 2 right data left 4 right data left 1 right node data left 7 right 2 node->right=newnode
  • 20. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 7. Υλοποίηση σε C: Εισαγωγή ως ∆εξί Παιδί 20∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα /* TR_insert_right(): Eisagei to stoixeio x ws deksi paidi tou node */ int TR_insert_right(TREE_PTR node,elem x) { TREE_PTR newnode; if (node->right!=NULL) return FALSE; newnode=(TREE_NODE *)malloc(sizeof(TREE_NODE)); if (!newnode) { printf("Adynamia desmeusis mnimis"); return FALSE; } newnode->data=x; newnode->left=NULL; newnode->right=NULL; node->right=newnode; return TRUE; }
  • 21. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 8. Υλοποίηση σε C: ∆ιαγραφή της ρίζας 21∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Η συνάρτηση δέχεται ως όρισµα τη ρίζα ενός δένδρου: 1. Ελέγχει ότι δεν έχει παιδία. 2. ∆ιαγράφει τον κόµβο. 3. Θέτει τη ρίζα ίση µε NULL ∆ΙΑΓΡΑΦΗ της ρίζας του δένδρου data left 5 right ΠΡΙΝ root ΜΕΤΑ root
  • 22. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 8. Υλοποίηση σε C: ∆ιαγραφή της ρίζας 22∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα /* TR_delete_root(): Diagrafei ti riza enos dentrou efoson den exei paidia */ int TR_delete_root(TREE_PTR *root, elem *x) { if ((*root)->left!=NULL || (*root)->right!=NULL) return FALSE; *x=(*root)->data; free(*root); *root=NULL; return TRUE; }
  • 23. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 9. Υλοποίηση σε C: ∆ιαγραφή αριστερού παιδιού κόµβου 23∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Η συνάρτηση δέχεται ως όρισµα έναν κόµβο (στον οποίο δείχνει ο parent) και διαγράφει το αριστερό παιδί του: 1. Ελέγχει ότι το αριστερό παιδί δεν έχει παιδιά. 2. ∆ιαγράφει το αριστερό παιδί. 3. Θέτει τον δείκτη left του κόµβου parent ίσο µε NULL. ∆ΙΑΓΡΑΦΗ του αριστερού παιδιού του κόµβου «2» 1 delete(parent->left) data left 5 right data left 2 right data left 4 right data left 1 right parent data left 7 right 2 parent->left=NULL
  • 24. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 9. Υλοποίηση σε C: ∆ιαγραφή αριστερού παιδιού κόµβου 24∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα /* TR_delete_left(): Diagrafei to aristero paidi tou komvou parent (efoson den exei paidia) */ int TR_delete_left(TREE_PTR parent, elem *x) { TREE_PTR current; if (parent->left==NULL) return FALSE; current=parent->left; if (current->left!=NULL || current->right!=NULL) return FALSE; *x=current->data; free(current); parent->left=NULL; return TRUE; }
  • 25. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 10. Υλοποίηση σε C: ∆ιαγραφή δεξιού παιδιού κόµβου 25∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Η συνάρτηση δέχεται ως όρισµα έναν κόµβο (στον οποίο δείχνει ο parent) και διαγράφει το δεξί παιδί του: 1. Ελέγχει ότι το δεξί παιδί δεν έχει παιδιά. 2. ∆ιαγράφει το δεξί παιδί. 3. Θέτει τον δείκτη right του κόµβου parent ίσο µε NULL. parent 2 parent->right=NULL 1 delete(parent->right) data left 5 right data left 2 right data left 4 right data left 1 right data left 6 right data left 7 right ∆ΙΑΓΡΑΦΗ του δεξιού παιδιού του κόµβου «4»
  • 26. A. Θεωρία 3. ∆υαδικά ∆ένδρα µε ∆υναµική Αναπαράσταση 10. Υλοποίηση σε C: ∆ιαγραφή δεξιού παιδιού κόµβου 26∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα /* TR_delete_right(): Diagrafei to deksi paidi tou komvou node (efoson den exei paidia) */ int TR_delete_right(TREE_PTR parent, elem *x) { TREE_PTR current; if (parent->right==NULL) return FALSE; current=parent->right; if (current->left!=NULL || current->right!=NULL) return FALSE; *x=current->data; free(current); parent->right=NULL; return TRUE; }
  • 27. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 1. Γενικά 27∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Οι διαπεράσεις είναι µεθοδολογίες για να επισκεφθούµε όλες τις κορυφές ενός ∆υαδικού ∆ένδρου: Εξετάζουµε: Την προδιατεταγµένη διαπέραση (preorder). Που εκτελεί τη σειρά επίσκεψης: Τρέχουσα Κορυφή Αριστερό Υποδένδρο ∆εξί Υποδένδρο Την ενδοδιατεταγµένη διαπέραση (inorder). Που εκτελεί τη σειρά επίσκεψης: Αριστερό Υποδένδρο Τρέχουσα Κορυφή ∆εξί Υποδένδρο Την µεταδιατεταγµένη ∆ιαπέραση (postorder). Που εκτελεί τη σειρά επίσκεψης: Αριστερό Υποδένδρο ∆εξί Υποδένδρο Τρέχουσα Κορυφή
  • 28. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 2. Υλοποίηση σε C: Προδιατεταγµένη ∆ιαδροµή 28∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα ------------------------------------------------------------- Αλγόριθµος Προδιατεταγµένης ∆ιαδροµής (PRE-ORDER) Είσοδος: ∆υαδικό ∆ένδρο Τ Έξοδος: Προδιατεταγµένη ∆ιάσχιση των Κορυφών του Τ ------------------------------------------------------------- procedure PRE-ORDER(n) Αν (n≠ΚΕΝΟ) Εκτύπωση του n PRE-ORDER(Αριστερό Παιδί της n) PRE-ORDER(∆εξί Παιδί της n) Τέλος-Αν end procedure n 1 root 2 left 3 right ΠΡΟ∆ΙΑΤΕΤΑΓΜΕΝΗ ∆ΙΑΠΕΡΑΣΗ
  • 29. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 2. Υλοποίηση σε C: Προδιατεταγµένη ∆ιαδροµή 29∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Παράδειγµα Εκτέλεσης της Προδιατεταγµένης ∆ιαδροµής στο ακόλουθο δένδρο: 10 146 1975 82 3 1 2 6 7 8 9 3 4 5 Παράγεται η ακολουθία (σειρά επίσκεψης): 10,6,5,2,3,7,8,14,19
  • 30. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 2. Υλοποίηση σε C: Προδιατεταγµένη ∆ιαδροµή 30∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Εµπειρικός Τρόπος (εκτέλεσης της προδιατεταγµένης διαπέρασης): • Κατασκευάζω το περίγραµµα και τραβάω γραµµή αριστερά από κάθε κόµβο. • Έπειτα σαρώνω το περίγραµµα αριστερόστροφα από τη ρίζα και όπου συναντάω γραµµή καταγράφω τον κόµβο 10 146 1975 82 3 Σειρά επίσκεψης: 10,6,5,2,3,7,8,14,19
  • 31. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 2. Υλοποίηση σε C: Προδιατεταγµένη ∆ιαδροµή 31∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα /* TR_preorder(): Ektypwsi kata tin prodiatetagmeni diadromi */ void TR_preorder(TREE_PTR v) { if(v!=NULL) { TR_print_node(v); TR_preorder(v->left); TR_preorder(v->right); } }
  • 32. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 3. Υλοποίηση σε C: Ενδο∆ιατεταγµένη ∆ιαπέραση 32∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα ------------------------------------------------------------- Αλγόριθµος Ενδοδιατεταγµένης ∆ιαδροµής (IN-ORDER) Είσοδος: ∆υαδικό ∆ένδρο Τ Έξοδος: Ενδοδιατεταγµένη ∆ιάσχιση των Κορυφών του Τ ------------------------------------------------------------- procedure IN-ORDER(v) Αν (v≠ΚΕΝΟ) IN-ORDER(Αριστερό Παιδί της v) Εκτύπωση του v IN-ORDER(∆εξί Παιδί της v) Τέλος-Αν end procedure n 2 root 1 left 3 right ΕΝ∆Ο∆ΙΑΤΕΤΑΓΜΕΝΗ ∆ΙΑΠΕΡΑΣΗ
  • 33. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 3. Υλοποίηση σε C: Ενδο∆ιατεταγµένη ∆ιαπέραση 33∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Παράδειγµα Εκτέλεσης της Ενδοδιατεταγµένης ∆ιαδροµής στο ακόλουθο δένδρο: Παράγεται η ακολουθία (σειρά επίσκεψης): 2,3,5,6,7,8,10,14,19 10 146 1975 82 3 7 4 5 6 8 9 3 1 2 Σηµείωση: Η ακολουθία εµφανίζεται σε αύξουσα σειρά γιατί το δένδρο έχει ειδική µορφή (∆υαδικό ∆ένδρο Αναζήτησης => Το µελετάµε στο επόµενο µάθηµα)
  • 34. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 3. Υλοποίηση σε C: Ενδο∆ιατεταγµένη ∆ιαπέραση 34∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Εµπειρικός Τρόπος (εκτέλεσης της ενδοδιατεταγµένης διαπέρασης): • Κατασκευάζω το περίγραµµα και τραβάω γραµµή κάτω από κάθε κόµβο. • Έπειτα σαρώνω το περίγραµµα αριστερόστροφα από τη ρίζα και όπου συναντάω γραµµή καταγράφω τον κόµβο Σειρά επίσκεψης: 2,3,5,6,7,8,10,14,19 10 146 1975 82 3
  • 35. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 3. Υλοποίηση σε C: Ενδο∆ιατεταγµένη ∆ιαπέραση 35∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα /* TR_inorder(): Ektypwsi kata tin endodiatetagmeni diadromi */ void TR_inorder(TREE_PTR v) { if(v!=NULL) { TR_inorder(v->left); TR_print_node(v); TR_inorder(v->right); } }
  • 36. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 5. Υλοποίηση σε C: Μετα∆ιατεταγµένη ∆ιαπέραση 36∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα ------------------------------------------------------------- Αλγόριθµος Μεταδιατεταγµένης ∆ιαδροµής (POST-ORDER) Είσοδος: ∆υαδικό ∆ένδρο Τ Έξοδος: Μεταδιατεταγµένη ∆ιάσχιση των Κορυφών του Τ ------------------------------------------------------------- procedure POST-ORDER(v) Αν (v≠ΚΕΝΟ) POST-ORDER(Αριστερό Παιδί της v) POST-ORDER(∆εξί Παιδί της v) Εκτύπωση του v Τέλος-Αν end procedure n 3 root 1 left 2 right ΜΕΤΑ∆ΙΑΤΕΤΑΓΜΕΝΗ ∆ΙΑΠΕΡΑΣΗ
  • 37. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 4. Υλοποίηση σε C: Μετα∆ιατεταγµένη ∆ιαπέραση 37∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Παράδειγµα Εκτέλεσης της Μεταδιατεταγµένης ∆ιαδροµής στο ακόλουθο δένδρο: Παράγεται η ακολουθία (σειρά επίσκεψης): 3,2,5,8,7,6,19,14,10 10 146 1975 82 3 9 6 5 4 8 7 3 2 1
  • 38. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 4. Υλοποίηση σε C: Μετα∆ιατεταγµένη ∆ιαπέραση 38∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα Εµπειρικός Τρόπος (εκτέλεσης της ενδοδιατεταγµένης διαπέρασης): • Κατασκευάζω το περίγραµµα και τραβάω γραµµή δεξιά από κάθε κόµβο. • Έπειτα σαρώνω το περίγραµµα αριστερόστροφα από τη ρίζα και όπου συναντάω γραµµή καταγράφω τον κόµβο Σειρά επίσκεψης: 3,2,5,8,7,6,19,14,10 10 146 1975 82 3
  • 39. A. Θεωρία 4. ∆ιαπέραση ∆υαδικών ∆ένδρων 4. Υλοποίηση σε C: Μετα∆ιατεταγµένη ∆ιαπέραση 39∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα /* TR_postorder(): Ektypwsi kata tin metadiatetagmeni diadromi */ void TR_postorder(TREE_PTR v) { if(v!=NULL) { TR_postorder(v->left); TR_postorder(v->right); TR_print_node(v); } }
  • 40. Β. Ασκήσεις Εφαρµογή 1: Μελέτη Προγράµµατος ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 6: ∆υαδικά ∆ένδρα 40 Μελετήστε το project tree.dev στο οποίο υλοποιούνται οι βασικές πράξεις των δένδρων που µελετήσαµε στο µάθηµα. Σε αυτό θα «πατήσουµε» στο επόµενο µάθηµα για να κατασκευάσουµε τα δυαδικά δένδρα αναζήτησης.