试卷总分:100分
选择题 15题 30分
判断题 10题 20分
编程题 2题 50分
对于如下二叉树,下面关于访问的顺序说法错误的是( )。
下面程序的运行结果为( )。
#include <iostream> int query(int n, int *a, int x) { int l = 0, r = n; while (l < r) { int mid = l + (r - l) / 2; if (a[mid] >= x) r = mid; else l = mid + 1; } if (l == n) return -1; return l; } int main() { int n = 10; int x = 3; int num[] = {1, 2, 2, 3, 3, 4, 5, 5, 6, 7}; std::cout << query(n, num, x) << "\n"; return 0; }
下面程序中,函数 query 的时间复杂度是( )。
#include <iostream> using namespace std; int f(int n) { if (n <= 2) return n * 2; return f(n - 1) + f(n - 2); } int main() { cout << f(5) << endl; return 0; }
下面哪一个可能是下图的深度优先遍历序列( )。
下面这个有向图的强连通分量的个数是( )。