考虑以下问题中给出的相同代码。函数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 (X)
{
print(Y);
count++;
if (count == k)
printf("%d ", root->data);
print(root->left, k);
}
}
如果函数print() 打印 BST 中第 k 个最大的元素,那么 X 和 Y 应该是什么?
(A) X = root != NULL && count >= k 和 Y = root->right, k
(B) X = root != NULL && count <= k and Y = root->right
(C) X = root != NULL && count >= k 和 Y = root->right
(D) X = root != NULL && count <= k and Y = root->right, k答案: (D)
说明:要打印 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);
}
}
所以,X = root != NULL && count <= k 和 Y = root->right,k 是正确的。
选项(D)是正确的。
这个问题的测验