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

📅  最后修改于: 2021-06-28 22:45:50             🧑  作者: 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 =根!= 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)为真。
这个问题的测验