数据结构与算法--二叉树与树(单选题含题解)

这篇具有很好参考价值的文章主要介绍了数据结构与算法--二叉树与树(单选题含题解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、对以下算法功能最准确的描述是()。

int  fun1(BTreeNode *BT, ElemType e){
int  n1, n2;
         if (BT==NULL)  return 0;
         if (BT->data==e)  return 1;//递归出口
         n1 = fun1(BT->left, e);//递归过程
         if (n1>=1)  return n1+1;
         n2 = fun1(BT->right, e);//递归过程
         if (n2>=1)  return n2+1;
         return 0;
}

A.判断二叉树根结点值是否为e

B.判断二叉树是否存在值为e结点

C.求二叉树中值为e结点的层次

D.求二叉树值为e的结点的个数

C

2、二叉树的形态

由 3 个结点可以构造出 ▁▁▁▁▁ 种不同形态的二叉树。

A.2

B.3

C.4

D.5

D

由n个结点可以构造出C(2n, n) / (n + 1)种不同形态的二叉树。

卡特兰数的通项为C(2n, n) / (n + 1)。

3、完全二叉树的叶子结点数

一棵有 1001 个结点的完全二叉树,其叶子结点数为 ▁▁▁▁▁ 。

A.250

B.254

C.500

D.501

D

完全二叉树有如下性质:n=n0+n1+n2,n0=n2+1(叶子结点数等于度为2的结点数加1)

n:结点总数

n0:度为0的结点个数,也就是叶子结点

n1:度为1的结点个数,在完全二叉树中值有0和1这两种情况(n1=0或1)

n2:度为2的结点个数

度为1的结点数为:

n为偶数:1

n为奇数:0

1001=n0+0+n0-1

n0=501

4、二叉树的高度

若根节点为高度1,一棵具有 1025 个结点的二叉树的高度为 ▁▁▁▁▁ 。

A.10

B.11

C.11~1025 之间

D.10~1024 之间

C、

若二叉树每层只有一个结点(单链表),则高度为1025

若二叉树为完全二叉树(高度为n,最多有2ⁿ-1个结点(n≥1),第i层,最多有2ⁿ-1个结点)

2ⁿ-1=1025 ( 2^10 - 1 < 1025 < 2^11 - 1 ),n=11

则该二叉树的高度为11~1025之间。

5、已知某二叉树的后序遍历序列是dabec, 中序遍历序列是debac , 它的前序遍历是( )。

A.acbed

B.decab

C.deabc

D.cedba

D

前序遍历:根左右

中序遍历:左根右debac

后序遍历:左右根dabec

①根据后序序列确定二叉树的根结点

②根据根结点在中序序列中划分出二叉树的左、右子树包含哪些结点。

然后根据左右子树结点在后序序列中的次序确定子树的根结点,即回到步骤①

③如此重复上述步骤,直到每棵子树仅有一个结点为止

第一层:根结点为c,左子树包含deba,没有右结点。

第二层:根结点为e,左结点为d,右子树包含ba

第三层:根结点为b,没有左结点,右结点为a

1 c

2 e

3 d b

4 a

6、对于任意一棵高度为 5 且有 10 个结点的二叉树,若采用顺序存储结构保存,每个结点占 1 个存储单元(仅存放结点的数据信息),则存放该二叉树需要的存储单元的数量至少是:

A.31

B.16

C.15

D.10

A

2^5 - 1 = 31

7、已知森林 F 及与之对应的二叉树 T,若 F 的先根遍历序列是 a, b, c, d, e, f,后根遍历序列是 b, a, d, f, e, c,则 T 的后序遍历序列是:

A.b, a, d, f, e, c

B.b, d, f, e, c, a

C.b, f, e, d, c, a

D.f, e, d, c, b, a

C

前序遍历:根左右 a, b c, d, e, f

中序遍历:左根右

后序遍历:左右根 b, a d, f, e, c

易知F中存在两棵二叉树,分别包括ab结点和cdef结点

F

1 a c

2 b d e

3 f

T

1 a

2 b c

3 d

4 e

5 f

8、一棵二叉树中有7个度为2的结点和5个度为1的结点,其总共有( )个结点。

A.16

B.18

C.20

D.30

C

n=n0+n1+n2

n0=n2+1

n=8+5+7=20

9、用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为( )

A.n-1

B.n

C.n+l

D.2n

C

n个结点的二叉链表中,有2n个链域,每一条非空链域对应一条树枝,而树枝的个数为n-1,

因此,空节点个数为2n-(n-1)=n+1。

10、某森林 F 对应的二叉树为 T,若 T 的先序遍历序列是 a, b, d, c, e, g, f,中序遍历序列是 b, d, a, e, g, c, f,则 F 中的树的棵树是:

A.1

B.2

C.3

D.4

C

前序遍历:根左右 a, b, d, c, e, g, f

中序遍历:左根右 b, d, a, e, g, c, f

后序遍历:左右根

第一层:根结点为a,左子树包含bd结点,右子树包含egcf结点

第二层:a的左子树的根结点为b,无左结点,右结点为d

a的右子树的根结点为c,左子树包含eg结点,右结点为f

第三层:根结点为e,无左结点,右结点为g

T

1 a

2 b c

3 d e f

4 g

F

1 a c f

2 b e

3 d g

转换为森林,包含3棵树,根结点分别为a,c,f。

11、若某二叉树有 5 个叶结点,其权值分别为 10、12、16、21、30,则其最小的带权路径长度(WPL)是:

A.89

B.200

C.208

D.289

B

合并最小的两个叶结点10、12→22:{ 16、21、22、30 }

合并最小的两个叶结点16、21→37:{ 22、30、37 }

合并最小的两个叶结点22、30→52:{ 37、52 }

合并最小的两个叶结点37、52→89:{ 89 }

1 89

2 37 52

3 16 21 22 30

4 10 12

16×2+21×2+10×3+12×3+30×2=200

32+42+30+36+60=200

12、给二叉树的结点编号

对一棵二叉树的结点从 1 开始顺序编号。要求每个结点的编号小于其左、右孩子的编号,且左孩子的编号小于右孩子的编号。可采用 ▁▁▁▁▁ 实现编号。

A.先序遍历

B.后序遍历

C.中序遍历

D.层次遍历

A

根<左<右→根左右→前序遍历

13、若将一棵树 T 转化为对应的二叉树 BT,则下列对 BT 的遍历中,其遍历序列与 T 的后根遍历序列相同的是:

A.先序遍历

B.中序遍历

C.后序遍历

D.按层遍历

B

树、森林、二叉树的遍历对应关系

森林 二叉树
先序遍历 先序遍历 先序遍历
后序遍历 中序遍历 中序遍历

14、设 T 是非空二叉树,若 T 的先序遍历和中序遍历序列相同,则 T 的形态是 __

A.只有一个根结点

B.没有度为 1 的结点

C.所有结点只有左孩子

D.所有结点只有右孩子

D

前序遍历:根左右

中序遍历:左根右

所有结点只有右孩子(所有结点没有左孩子)

15、设 T 是非空二叉树,若 T 的后序遍历和中序遍历序列相同,则 T 的形态是 __

A.只有一个根结点

B.没有度为 1 的结点

C.所有结点只有左孩子

D.所有结点只有右孩子

C

中序遍历:左根右

后序遍历:左右根

所有结点只有左孩子(所有结点没有右孩子)

16、利用二叉链表存储树,则根结点的右指针是( )。

A.指向最左孩子

B.指向最右孩子

C.空

D.非空

D

树转换为二叉树:(二叉链表)

1、孩子节点放在左子树

2、兄弟节点放在右子树

因为根没有兄弟节点,所以根节点没有右子树,即根结点的右指针为空。

17、设一段文本中包含字符{a, b, c, d, e},其出现频率相应为{3, 2, 5, 1, 1}。则经过哈夫曼编码后,文本所占字节数为:

A.40

B.36

C.25

D.12

C

1 12

2 5 7

3 3 4

4 2 2

5 1 1

5×1+3×2+1×4+1×4+2×3=25

5+6+4+4+6=25

18、已知字符集{ a, b, c, d, e, f, g, h }。若各字符的哈夫曼编码依次是 0100, 10, 0000, 0101, 001, 011, 11, 0001,则编码序列 0100011001001011110101 的译码结果是:

A.acgabfh

B.adbagbb

C.afbeagd

D.afeefgd

D

0100 011 001 001 011 11 0101

1 ?

2 ? ?

3 ? ? b g

4 ? e ? f

5 c h a d

19、已知字符集{ a, b, c, d, e, f },若各字符出现的次数分别为{ 6, 3, 8, 2, 10, 4 },则对应字符集中各字符的哈夫曼编码可能是:

A.00, 1011, 01, 1010, 11, 100

B.00, 100, 110, 000, 0010, 01

C.10, 1011, 11, 0011, 00, 010

D.0011, 10, 11, 0010, 01, 000

A

2+3=5 { 4, 5, 6, 8, 10 }

4+5=9 { 6, 8, 9, 10 }

6+8=14 { 9, 10, 14 }

9+10=19 { 14, 19 }

14+19=33 { 33 }

1 33

2 14 19

3 6 a 8 c 9 10 e

4 4 f 5

5 2 d 3 b

a:00

b:1011

c:01

d:1010

e:11

f:100

20、对 n 个互不相同的符号进行哈夫曼编码。若生成的哈夫曼树共有 115 个结点,则 n 的值是:

A.56

B.57

C.58

D.60

C

哈夫曼树(结点个数为奇数)中度为1的结点为0(n1=0)

n=n0+n1+n2

n0=n2+1

115=n0+0+n0-1

n0=58

即叶子结点数为58,n=58。

21、已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是:

A.39

B.52

C.111

D.119

C

第六层有2^5=32个结点,度为2的结点共有32-8=24个,则第七层最多有24×2=48个结点

第一层到第六层共有2^6-1=63个结点

则该完全二叉树的结点个数最多为63+48=111个

22、在一个用数组表示的完全二叉树中,如果根结点下标为1,那么下标为17和19这两个结点的最近公共祖先结点在哪里(数组下标)? (注:两个结点的“公共祖先结点”是指同时都是这两个结点祖先的结点)

A.8

B.4

C.2

D.1

B

2i+1=17 2j+1=19

i=8 j=9

2a=8 2b+1=9

a=b=4

23、具有65个结点的完全二叉树其深度为(根的深度为1):

A.8

B.7

C.6

D.5

B

2^6- 1 < 65 < 2^7 - 1

n=7

24、设一棵非空完全二叉树 T 的所有叶节点均位于同一层,且每个非叶结点都有 2 个子结点。若 Tk 个叶结点,则 T 的结点总数是:

A.2k−1

B.2k

C.k^2

D.2^k−1

A

非叶子结点都有两个子节点,n1=0

n=n0+n1+n2

n0=n2+1

n=k+0+k-1=2k-1

25、设森林F中有三棵树,第一、第二、第三棵树的结点个数分别为M1,M2和M3。则与森林F对应的二叉树根结点的右子树上的结点个数是:

A.M1

B.M1+M2

C.M2+M3

D.M3

C

森林转化为二叉树

①首先将森林中所有的普通树各自转化为二叉树

②将森林中第一棵树的树根作为整个森林的树根其他树的根节点看作是第一棵树根节点的兄弟节点

采用孩子兄弟表示法将所有树进行连接

第一棵树的根结点作为二叉树的根结点,

第一棵树的左子树作为二叉树的左子树,

其余的两棵树作为二叉树的右子树,

则森林对应的二叉树的右子树上的结点个数为其余的两棵树的结点个数之和,即M2+M3。

26、将下列由三棵树组成的森林转换为二叉树,正确的结果是( )。

对以下算法功能最准确的描述是()。 int fun1(btreenode *bt, elemtype e){ int n1,算法,数据结构,笔记,经验分享,c++

A.

对以下算法功能最准确的描述是()。 int fun1(btreenode *bt, elemtype e){ int n1,算法,数据结构,笔记,经验分享,c++

B.

对以下算法功能最准确的描述是()。 int fun1(btreenode *bt, elemtype e){ int n1,算法,数据结构,笔记,经验分享,c++

C.

对以下算法功能最准确的描述是()。 int fun1(btreenode *bt, elemtype e){ int n1,算法,数据结构,笔记,经验分享,c++

D.

对以下算法功能最准确的描述是()。 int fun1(btreenode *bt, elemtype e){ int n1,算法,数据结构,笔记,经验分享,c++

A

27、若二叉搜索树是有N个结点的完全二叉树,则不正确的说法是:

A.所有结点的平均查找效率是O(logN)

B.最小值一定在叶结点上

C.最大值一定在叶结点上

D.中位值结点在根结点或根的左子树上

C

二叉搜索树:左 < 根 < 右(若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值)

若没有右结点,则最大值在根结点上。

28、将{ 32, 2, 15, 65, 28, 10 }依次插入初始为空的二叉搜索树。则该树的前序遍历结果是:

A.2, 10, 15, 28, 32, 65

B.32, 2, 10, 15, 28, 65

C.10, 28, 15, 2, 65, 32

D.32, 2, 15, 10, 28, 65

D

二叉搜索树:左 < 根 < 右(若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值)

1 32

2 2 65

3 15

4 10 28

29、已知二叉排序树如下图所示,元素之间应满足的大小关系是:

对以下算法功能最准确的描述是()。 int fun1(btreenode *bt, elemtype e){ int n1,算法,数据结构,笔记,经验分享,c++

A.x1<x2<x5

B.x1<x4<x5

C.x3<x5<x4

D.x4<x3<x5

C

二叉搜索树:左 < 根 < 右(若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值)

x1<x2,x3,x4,x5

x3<x2

x3<x4,x5

x5<x4

30、下列给定的关键字输入序列中,不能生成如下二叉排序树的是:

对以下算法功能最准确的描述是()。 int fun1(btreenode *bt, elemtype e){ int n1,算法,数据结构,笔记,经验分享,c++

A.4, 5, 2, 1, 3

B.4, 5, 1, 2, 3

C.4, 2, 5, 3, 1

D.4, 2, 1, 3, 5

B

二叉搜索树:左 < 根 < 右(若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值)

B.4, 5, 1, 2, 3

1 4

2 1 5

3 2

4 3文章来源地址https://www.toymoban.com/news/detail-775565.html

到了这里,关于数据结构与算法--二叉树与树(单选题含题解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构之树与二叉树——算法与数据结构入门笔记(五)

    本文是算法与数据结构的学习笔记第五篇,将持续更新,欢迎小伙伴们阅读学习。有不懂的或错误的地方,欢迎交流 前面章节介绍的都是线性存储的数据结构,包括数组、链表、栈、队列。本节带大家学习一种非线性存储的数据结构,即树(tree)。 不管是在面试时,还是日

    2024年02月08日
    浏览(50)
  • 【数据结构】树与二叉树

    树是一种 非线性的数据结构 ,它是由n(n=0)个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 。它具有以下的特点: 有一个特殊的结点,称为根结点,根结点没有前驱结点 除根结点外,其余结点被分

    2024年02月11日
    浏览(45)
  • [数据结构] 树与二叉树

    树是由 (n(n geq 0)) 个节点组成的有限集。当 (n = 0) 时,称为空树。 任意一棵非空树应满足以下两点: (1)有且仅有一个特定的称为根的节点; (2)当 (n 1) 时,其余节点可分为 (m(m0)) 个互不相交的有限集 (T_1, T_2, dots, T_m) ,其中每个集合本身又是一棵树,称为根的

    2024年03月09日
    浏览(41)
  • 数据结构--树与二叉树

    树的定义 树是n(n =0)个节点的有限集。当n=0 时,称为空树 在任意一棵非空树中应满足 有且仅有一个特定的称为根的结点 当n1 时,其余节点可分为m(m0) 个互不相交的有限集T1,T2……Tm,其中每个集合本身又是一棵树,并且称为根的子树 树是一种逻辑结构,也是一种分层结构 树的

    2024年02月22日
    浏览(44)
  • 【数据结构】树与二叉树(中)

    目录 前言: 一、顺序存储结构: 二、堆: 1.堆的性质: 2.堆的性质: 3.堆的实现: Ⅰ.堆的初始化:  Ⅱ.堆的插入(含向上调整):  Ⅲ.堆的删除(含向下调整算法): Ⅳ.取堆顶的数据: Ⅴ.堆中的数据个数: Ⅵ.堆的判空:  Ⅶ.堆的销毁: 总结:         上篇文章中,

    2024年02月16日
    浏览(46)
  • 数据结构_树与二叉树

    目录 1. 树的基本概念 1.1 树的定义 1.2 基本术语 1.3 树的性质 1.4 相关练习 2. 二叉树的概念 2.1 二叉树的概念及其主要特性 2.2 二叉树的存储结构 2.2.1 顺序存储结构 2.2.2 链式存储结构 2.3 相关练习 3. 二叉树的遍历和线索二叉树 3.1 二叉树的遍历 3.1.1 先序遍历 3.1.2 中序遍历 3.1

    2024年02月04日
    浏览(46)
  • 数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)

    目录 一.树的概念 二.树中重要的概念 三.二叉树的概念 满二叉树 完全二叉树 四.二叉树的性质 五.二叉树的存储 六.二叉树的遍历 前序遍历 中序遍历  后序遍历  树是一种 非线性数据结构 ,它由节点和边组成。树的每个节点可以有零个或多个子节点,其中一个节点被指定为

    2024年02月04日
    浏览(49)
  • 二叉树与树、森林之间的转换

    树可以称为特殊的森林 , 其中二叉树是树中一些节点度数最大为2 ,并且分左右孩子的树 ● 二叉树很重要         • 结构简单         • 存储效率高         • 运算算法相对简单         • 任何森林、树都可以转换成二叉树 ● 讨论         • 二叉树 == 度为2 的树

    2024年02月10日
    浏览(32)
  • 【数据结构】:二叉树与堆排序的实现

    树是一种非线性的数据结构,它是由n(n=0)个有限结点组成一个具有层次关系的集合把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的有一个特殊的结点,称为根结点,根节点没有前驱结点 除根节点外,其余结点被分成M(M0)个互不相交的集合T1、

    2024年02月08日
    浏览(41)
  • 二叉树与树和森林的转换

    树转换成二叉树:兄弟相连留长子(长子变为根结点的左子树,其余孩子变为长子的右子树)  二叉树变为树:左孩右右连双亲(左孩子的右孩子,右孩子的右孩子...一直到某个右孩子没有右孩子),去点原来右孩线   森林转换为二叉树:树变二叉根相连(将每棵树转换为二

    2024年02月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包