PROBLEM SET
题库
按难度与知识点筛选,找到适合的练习题。
题目列表
共 67434 题
A18429
以下代码可以正确地按层换行输出二叉树的节点值。void printByLevel(TreeNode* root) { if (!root) return; queue<TreeNode*> q; q.push(root); while (!q.empty()) { for (int i = 0; i < q.size(); ++i) { TreeNode* cur = q.front(); q.…
C-L6
困难
--
A18430
若用数组按层序存储完全二叉树,且根节点下标为 0 ,则下标为 i 的节点左孩子下标为 2 * i + 1 ,右孩子下标为 2 * i + 2 。
C-L6
困难
--
A18431
哈夫曼编码一定唯一,只要字符频率相同,得到的编码也一定完全相同。
C-L6
困难
--
A18432
下列函数试图将整数 x 插入到一棵二叉搜索树中。假设二叉搜索树满足如下性质:对于任意结点,左子树中所有结点的值均小于该结点的值,右子树中所有结点的值均大于或等于该结点的值。判断该函数是否能够在插入后保持二叉搜索树性质。struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left…
C-L6
困难
--
A18433
程序运行后会输出 2 。int main() { queue<int> q; q.push(1); q.push(2); q.push(3); q.pop(); cout << q.front() << endl; return 0; }
C-L6
困难
--
A18434
在 C++ STL 中, stack 的 pop() 函数会返回栈顶元素并将其删除。
C-L6
困难
--
A18435
通过指向 Base 的指针删除 Derived 对象时,一定会先调用 Derived 的析构函数,再调用 Base 的析构函数。#include <iostream> using namespace std; class Base { public: ~Base() { cout << "Base destructor" << endl; } }; class Derived : public …
C-L6
困难
--
A18436
C++ 中构造函数可以声明为虚函数,从而实现运行时多态。
C-L6
困难
--
A18437
下面代码实现 0/1 背包的一维动态规划。第 i 个物品重量为 wt[i] ,价值为 val[i] ,背包容量为 W 。横线处应填写( )。int knapsack(int W, vector<int>& wt, vector<int>& val) { int n = wt.size(); vector<int> dp(W + 1, 0); for (int i = 0; i < n; ++i)…
C-L6
困难
--
A18438
给定一个整数数组 a ,每个元素表示一个位置上的数值。要求从数组中选择若干个元素,使得任意两个被选择的元素在原数组中都不相邻,并且所选元素的总和最大。函数 choose(vector<int>& a) 返回能够得到的最大总和,则横线处应填写( )。int choose(vector<int>& a) { if (a.empty()) return 0; int n = a.size(); if …
C-L6
困难
--
A18439
下面代码实现二叉搜索树的插入操作。假设树中不存在重复值,横线处应填写( )。TreeNode* insertNode(TreeNode* root, int x) { if (root == nullptr) { return new TreeNode(x); } if (x < root->val) { __________________________ } else { root->rig…
C-L6
困难
--
A18441
在格雷码中,相邻两个编码只能有一位不同。若当前编码为 110 ,则它的下一个编码不可能是( )。
C-L6
困难
--
A18442
对n个不同符号进行哈夫曼编码。若生成的哈夫曼树共有63个结点,则 n 的值是( )。
C-L6
困难
--
A18443
有6个字符,它们出现的次数分别为:{3,4,7,8,12,15} ,现在用哈夫曼编码为这些字符编码,最小加权路径长度 WPL 的值为( )。
C-L6
困难
--
A18444
已知一棵二叉树的先序遍历序列为: A B D E H C F G ,中序遍历序列为: D B H E A F C G ,则该二叉树的后序遍历序列是( )。
C-L6
困难
--
A18445
以下代码实现了二叉树的哪种遍历方式?void traverse(TreeNode* root) { if (root == nullptr) return; cout << root->val << " "; traverse(root->left); traverse(root->right); }
C-L6
困难
--
A18446
以下函数 check() 用于判断一棵二叉树是否为( )。bool check(TreeNode* root) { if (!root) return true; queue<TreeNode*> q; q.push(root); bool hasNull = false; while (!q.empty()) { TreeNode* cur = q.front(); q.pop(); if (…
C-L6
困难
--
A18447
假设循环队列数组长度为 N = 7 ,队空判断条件为 front == rear 。入队和出队操作如下:const int N = 7; int q[N]; int front = 3, rear = 3; void enqueue(int x) { q[rear] = x; rear = (rear + 1) % N; } void dequeue() { front = (front + 1…
C-L6
困难
--
A18448
某文本编辑器把用户输入的字符依次压入栈 S 。用户依次输入 X, Y, Z, W 后,连续执行两次撤销操作。每次撤销都会弹出栈顶一个字符。此时栈从栈底到栈顶的内容是( )。
C-L6
困难
--
A18449
下面代码在 main() 中有一行会导致编译错误,请找出来。class Student { public: Student(string n, int s) : name(n), score(s) { } string getName() { return name; } void setScore(int s) { score = s; } private: string name; int …
C-L6
困难
--