给定下图所示的二叉树,假设调用函数 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-> data 所以打印 60 然后函数调用 B(node_ptr->left) 然后在 B 内,调用 A (node_ptr->left) 然后打印该数据是 5 . 然后调用 A(node_ptr->right) 返回到 A,打印该数据,以便打印 8。现在我不太确定下一步该做什么,但从逻辑上讲,打印 30 是有意义的,但我不确定 ptr 如何从 8 变为 30。然后如果你继续以相同的模式打印 38 并打印 32。对于右子树... 90 77 62 88