以下に示す二分木を前提として、関数A(root)が呼び出されたと仮定して、以下に示す二分木のノードにアクセスする順序を決定します。ツリーノードとポインタが次のように定義されていると仮定します。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);
}
}
回答: void Aでは、最初にnode_ptr->データを出力して、60が出力されるように指示します。次に、関数はB(node_ptr-> left)を呼び出し、次にB内でAが呼び出され(node_ptr-> left)、5であるデータを出力します。 。次に、A(node_ptr-> right)が呼び出され、Aに戻り、そのデータを印刷して、8が印刷されるようにします。次に何をすべきかよくわかりませんが、論理的には30を印刷するのは理にかなっていますが、ptrが8から30になる方法がわかりません。同じパターンで続行すると、38が印刷され、32が印刷されます。右のサブツリーの場合...9077 62 88