【发布时间】:2017-01-25 18:56:08
【问题描述】:
我想借助我已经创建的二叉搜索树对一些数据进行排序。 我有以下有效的示例代码..但无法理解这是如何工作的.. 它开始,如果数据库中没有记录,则 b=0 并返回。这很清楚。 如果 b 存在,那么它会转到左侧节点并一次又一次地调用该函数,直到 b->left ==NULL.. 我得到它正确吗? 但是它什么时候打印数据,因为当它运行它不打印的函数时我得到的数据,而是从函数的顶部重新开始..
void display_ordered_email(struct BST_node *b)
{
if (b==0)
return;
display_ordered_email(b->left);
printf("Name : %s\n", b->data->name);
printf("Address : %s\n", b->data->address);
printf("Email : %s\n", b->data->email);
printf("\n");
display_ordered_email(b->right);
}
这是中序遍历还是其他方法?
【问题讨论】:
-
当它到达第一个 NULL 并返回时,它会返回到上次递归调用的位置。这是代码示例中的第 5 行,这意味着它将在第 6 行继续,这是第一个 printf 语句。当你说“但它什么时候打印数据......”时,这就是你要问的吗?
标签: c algorithm binary-search-tree