📌  相关文章
📜  门| Sudo GATE 2020 Mock III(2019 年 1 月 24 日)|第 30 题

📅  最后修改于: 2021-09-26 03:54:29             🧑  作者: Mango

考虑以下问题中给出的相同代码。函数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)是正确的。
这个问题的测验