Dată fiind arborele binar prezentat mai jos, determină ordinea în care nodurile arborelui binar prezentate mai jos sunt vizitate presupunând funcția A (root) este invocată. Să presupunem că nodurile de arbori și indicatoarele sunt definite după cum se arată. Să presupunem că rădăcină este un pointer la nodul care conține 60. Răspunsul meu la această problemă este prezentată mai jos. Este corect? Ce am făcut greșit?
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);
}
}
Raspuns: In nule A se spune pentru a imprima primele node_ptr-> 60 de date , astfel devine imprimate atunci funcția apel B (node_ptr-> stânga) , apoi în interiorul B, A se numește (node_ptr-> stânga) , apoi imprimați datele care este de 5 . Și apoi a (node_ptr-> dreapta) se numește du - te înapoi până la a, de imprimare care datele astfel încât 8 se imprimă. Acum , Im nu atât de sigur ce să fac în continuare , dar am obține în mod logic , ar avea sens pentru a imprima 30 , dar Im nu sunt sigur cum PTR ajunge de la 8 la 30. Și apoi , dacă continuați în același model 38 devine imprimat și 32 se imprimă. Pentru subarborelui drept ... 90 77 62 88













