考虑以下问题中给出的相同代码。函数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 =根!= NULL &&计数> = k和Y =根->右,k
(B) X =根!= NULL &&计数<= k且Y =根->右
(C) X =根!= NULL &&计数> = k和Y =根->右
(D) X =根!= NULL &&计数<= k和Y =根->右,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)为真。
这个问题的测验