📜  数据结构|二叉搜索树|问题12

📅  最后修改于: 2021-06-28 19:44:48             🧑  作者: Mango

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