考虑与上述问题相同的代码。函数print()的一般函数是什么?
函数print()接收二进制搜索树(BST)的根和正整数k作为参数。
// A BST node
struct node {
int data;
struct node *left, *right;
};
int count = 0;
void print(struct node *root, int k)
{
if (root != NULL && count <= k)
{
print(root->right, k);
count++;
if (count == k)
printf("%d ", root->data);
print(root->left, k);
}
}
(A)在BST中打印第k个最小的元素
(B)在BST中打印第k个最大元素
(C)从根目录打印级别k的最左边的节点
(D)从根开始在级别k处打印最右边的节点答案: (B)
说明:该函数基本上对给定的二进制搜索树进行反向有序遍历。反向有序遍历会以反向排序的顺序生成数据。每当访问点头时,计数都将增加1,并且仅当计数变为k时才打印节点的数据。
这个问题的测验