考虑以下 C 中的代码片段。函数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);
}
}
print(root, 3) 的输出是什么,其中 root 代表以下 BST 的根。
15
/ \
10 20
/ \ / \
8 12 16 25
(一) 10
(乙) 16
(三) 20
(四) 20 10答案:(乙)
说明:代码主要是找出BST中第k大的元素,详见BST中的第K大元素。
这个问题的测验