Δεδομένης της δυαδικό δένδρο που δείχνεται παρακάτω, καθορίζουν τη σειρά με την οποία οι κόμβοι του δυαδικού δένδρου που δείχνεται παρακάτω επισκέφθηκε την παραδοχή ότι η λειτουργία Α (root) γίνεται επίκληση. Ας υποθέσουμε ότι οι κόμβοι δέντρο και δείκτες που ορίζονται όπως φαίνεται. Ας υποθέσουμε ότι ρίζα είναι ένας δείκτης στον κόμβο που περιέχει 60. Η απάντησή μου σε αυτό το πρόβλημα δίνεται παρακάτω. Είναι σωστό? Τι εκανα λαθος?
60
/ \
30 90
/ \ /
5 38 77
\ / / \
8 32 62 88
struct treeNode{
int data;
struct treeNode *left, *right:
{
struct treeNode *tree_ptr;
void A(struct treeNode *node_ptr){
if (node_ptr != NULL){
printf(“%d ,”,node_ptr->data);
B(node_ptr->left);
B(node_ptr->right);
}
}
void B(struct treeNode *node_ptr){
if (node_ptr != NULL) {
A(node_ptr->left);
printf(“%d ,”,node_ptr->data);
A(node_ptr->right);
}
}
Απάντηση: Στο κενό Ένας λέει στην πρώτη εκτύπωση node_ptr-> δεδομένα έτσι 60 θα εκτυπωθεί Στη συνέχεια, η συνάρτηση καλεί B (node_ptr-> αριστερά), στη συνέχεια, στο πλαίσιο Β, Α παίρνει ονομάζεται (node_ptr-> αριστερά), τότε μπορείτε να εκτυπώσετε τα δεδομένα που είναι 5 . Και τότε A (node_ptr-> δεξιά) παίρνει ονομάζεται πάει πίσω μέχρι Α, εκτύπωσης των δεδομένων, ώστε 8 θα εκτυπωθεί. Τώρα δεν είμαι τόσο σίγουρος τι να κάνω τώρα, αλλά έχω πάρει λογικά θα είχε νόημα να εκτυπώσετε 30, αλλά δεν είμαι σίγουρος πως η ptr παίρνει από 8 έως 30. Και στη συνέχεια, αν συνεχίσει στο ίδιο μοτίβο 38 θα εκτυπωθεί και 32 θα εκτυπωθεί. Για τη σωστή υποδέντρο ... 90 77 62 88













