Biorąc pod uwagę binarne drzewo poniżej, określić kolejność, w której węzły drzewa binarnego Poniżej znajdują odwiedził zakładając funkcję A (root) jest wywoływany. Załóżmy, że węzły drzewa i wskaźniki są zdefiniowane jak pokazano. Zakładamy, że korzeń jest wskaźnik do węzła zawierającego 60. Moja odpowiedź na ten problem jest podana poniżej. Czy to jest poprawne? Co zrobiłem źle?
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);
}
}
Odpowiedź: W void A on mówi do pierwszego wydruku node_ptr-> Dane więc 60 zostanie wydrukowanych wówczas funkcja zwraca B (node_ptr-> w lewo), a następnie w ciągu B, A jest wywoływana (node_ptr-> po lewej), a następnie wydrukować, że dane, które jest 5 ., a następnie (node_ptr-> prawo) jest wywoływana wrócić aż do druku, że dane tak 8 zostanie wydrukowany. Teraz nie jestem taki pewien, co robić dalej, ale pojawia się logicznie byłoby sensu drukować 30, ale nie jestem pewien, jak ptr dostaje od 8 do 30. A potem, jeśli nadal w tym samym deseniu 38 i 32 zostanie wydrukowany zostanie wydrukowany. Na prawym poddrzewie ... 90 77 62 88













