考虑与上述问题相同的代码。函数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 层最右边的节点答案:(乙)
说明:该函数基本上对给定的二叉搜索树进行反向中序遍历。反向中序遍历以反向排序顺序生成数据。每当访问一个节点时,计数加 1,只有当计数变为 k 时才打印节点的数据。
这个问题的测验