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

📅  最后修改于: 2021-09-08 12:51:27             🧑  作者: 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 层最右边的节点答案:(乙)
说明:该函数基本上对给定的二叉搜索树进行反向中序遍历。反向中序遍历以反向排序顺序生成数据。每当访问一个节点时,计数加 1,只有当计数变为 k 时才打印节点的数据。
这个问题的测验