C/C++笔试易错与高频题型&图解知识点(三)——数据结构部分(持续更新中)

目录

1. 排序

1.1 冒泡排序的改进

2. 二叉树

2.1 二叉树的性质

3. 栈 & 队列

3.1 循环队列

3.2 链式队列

4. 平衡二叉搜索树——AVL树、红黑树

5 优先级队列(堆)

1. 排序

1.1 冒泡排序的改进

下面的排序方法中,关键字比较次数与记录的初始排列无关的是______。

A. 希尔排序

B. 冒泡排序

C. 直接插入排序

D. 直接选择排序

答案:D

基础的冒泡排序是与初始排列无关的,但是改进的冒泡排序,当一趟排序之后没有交换,则说明序列已经有序,则可退出排序,例如一个已经排好序的序列,第一次循环之后就可以退出排序了;

所以说对比B选项和D选项,D选项肯定时最优解

2. 二叉树

2.1 二叉树的性质

① 对于任意一颗二叉树,设叶子节点个数为n0,度为二的节点的个数为n2,则满足n0 = n2 + 1

某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为() A. 不存在这样的二叉树

B. 200

C. 198(错误)

D. 199

答案:B

②深度和高度

根节点的深度为0

3. 栈 & 队列

3.1 循环队列

现有一循环队列,其队头指针为front,队尾指针为rear;循环队列长度为N。其队内有效长度为()(“左闭右开”)

A. (rear - front + N) % N + 1(错误)

B. (rear - front + N) % N

C. (rear - front) % (N + 1)

D. (rear - front + N) % (N - 1)

答案:B

C/C++笔试易错与高频题型&图解知识点(三)——数据结构部分(持续更新中)_第1张图片

3.2 链式队列

用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()

A. 仅修改队头指针(错误)

B. 仅修改队尾指针

C. 队头、队尾指针都可能要修改

D. 队头、队尾指针都要修改

答案:C

※当队列只有一个节点时,出队列对头队尾指针均需要修改

4. 平衡二叉搜索树——AVL树、红黑树

 若将关键字1,2,3,4,5,6,7 依次插入到初始为空的平衡二叉树 T 中,则 T 中平衡因子为 0 的分支结点的个数是( )

A. 0

B. 1

C. 2

D. 3

答案:D   (分支节点:不包含叶子节点)

C/C++笔试易错与高频题型&图解知识点(三)——数据结构部分(持续更新中)_第2张图片

C/C++笔试易错与高频题型&图解知识点(三)——数据结构部分(持续更新中)_第3张图片

C/C++笔试易错与高频题型&图解知识点(三)——数据结构部分(持续更新中)_第4张图片 C/C++笔试易错与高频题型&图解知识点(三)——数据结构部分(持续更新中)_第5张图片

5 优先级队列(堆)

下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()

A. 二叉排序树(错误)

B. 哈夫曼树

C. AVL树

D. 堆

答案:D 

知识点:小根堆与大根堆(详细看数据结构一、1.2节)

你可能感兴趣的:(c语言,c++,数据结构)