Vzhledem k tomu, binární strom je uvedeno níže, určení pořadí, ve kterém jsou navštívil uzly binárního stromu níže za předpokladu, že funkce A (root) se vyvolá. Předpokládat, že strom uzly a ukazatele jsou definovány, jak je uvedeno. Předpokládáme, že kořen je ukazatel na uzel, který obsahuje 60. Moje odpověď na tento problém je uveden níže. Je to správně? Co jsem udělal špatně?
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);
}
}
Odpověď: V void A říká, že na první tiskové node_ptr-> dat, takže 60 dostane tištěných Potom volání funkce B (node_ptr-> vlevo), pak v B, A volána (node_ptr-> vlevo) a pak vytisknout, že údaje, které jsou 5 . A pak A (node_ptr-> vpravo) volána se vrátit do A, tisku, že data, takže se vytiskne 8. Teď nejsem tak jistý, co dělat dál, ale jsem si logicky by mělo smysl pro tisk 30, ale nejsem si jistý, jak se ptr dostane od 8. do 30. A pak, pokud budete pokračovat ve stejném vzoru 38 se vytiskne a 32 se vytiskne. Pro správnou podstromu ... 90 77 62 88













