itgle.com

某二叉树如图所示,若进行顺序存储(即用一维数组元素存储该二叉树中的节点且通过下标反映节点间的关系,例如,对于下标为i的节点,其左孩子的下标为2i、右孩子的下标为2i+1),则该数组的大小至少为 (请作答此空) ;若采用三叉链表存储该二叉树(各个节点包括节点的数据、父节点指针、左孩子指针、右孩子指针),则该链表的所有节点中空指针的数目为 ( ) 。 A.6 B.10 C.12 D.15

题目
某二叉树如图所示,若进行顺序存储(即用一维数组元素存储该二叉树中的节点且通过下标反映节点间的关系,例如,对于下标为i的节点,其左孩子的下标为2i、右孩子的下标为2i+1),则该数组的大小至少为 (请作答此空) ;若采用三叉链表存储该二叉树(各个节点包括节点的数据、父节点指针、左孩子指针、右孩子指针),则该链表的所有节点中空指针的数目为 ( ) 。

A.6
B.10
C.12
D.15

相似考题

4.阅读以下函数说明和C代码,将C程序中(1)~(5)空缺处的内容补充完整。【说明】对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。例如,给定字符集合{a,b,c,d}及其权值2、7、4、5,可构造如图6-15所示的最优二叉树,以及相应的结构数组Ht(如表6-14所示,其中数组元素Ht[0]不用)。结构数组Ht的类型定义如下:define MAXLEAFNUM 20struct node{char ch; /*扫当前节点表示的字符,对于非叶子节点,此域不用*/Int weight; /*当前节点的权值*/int parent; /*当前节点的父节点的下标,为0时表示无父节点*/int lchild, rchild;/*当前节点的左、右孩子节点的下标,为0时表示无对应的孩子节点*/)Ht[2*MAXLEAFNUM];用“0”或“广标识最优二叉树中分支的规则是:从一个节点进入其左(右)孩子节点,就用“0”(或“1”)标识该分支,如图6-15所示。若用上述规则标识最优二叉树的每条分支后,从根节点开始到叶子节点为止,按经过分支的次序将相应标识依次排列,可得到由“0”、“1”组成的一个序列,称此序列为该叶子节点的前缀编码。例如,图6-15所示的叶子节点a、b、c、d的前缀编码分别是110、0、111、10。函数void LeafCode(int root,int n)的功能是:采用非递归方法,遍历最优二叉树的全部叶子节点,为所有的叶子节点构造前缀编码。其中,形参root为最优二叉树的根节点下标;形参n为叶子节点个数。在函数void LeafCode(int root,int n)构造过程中,将Ht[p].weight域用做被遍历节点的遍历状态标志。函数void Decode(char *buff,int root)的功能是:将前缀编码序列翻译成叶子节点的字符序列,并输出。其中,形参root为最优二叉树的根节点下标;形参buff指向前缀编码序列。【函数4.1】char **HC;void LeafCode(int root, int n){ /*为最优二叉树中的n个叶子节点构造前缀编码,root是树的根节点下标*/int I,p=root,cdlen=0;char code[20];Hc = (char **)malloc((n+1)*sizeof(char *)); /*申请字符指针数组*/For(i = 1;i<= p;++I)Ht [i]. weight = 0; /*遍历最优二叉树时用做被遍历节点的状态标志* /While (p) { /*以非递归方法遍历最优二叉树,求树中每个叶子节点的编码*/If(Ht[p].weight == 0) { /*向左*/Ht[p].weight = 1;If(Ht[p].lchild != 0) {p = Ht[p].lchild;code[cdlen++] = '0';}else if(Ht[p].rchild == 0) { /*若是叶子节点,则保存其前缀编码*/Hc[p] = (char *)malloc((cdlen+1)*sizeof(char));(1);strcpy (Hc [p],code);}}else if(Ht[p].weight == 1) { /*向右*/Ht [p].weight = 2;If(Ht[p].rchild != 0) {p = Ht [p].rchild;code[cdlen++] ='1';}}else { /*Ht[p].weight == 2,回退/Ht [p].weight = 0;p =(2);(3); /*退回父节点*/}} / *while .结束* /}【函数4.2】void Decode(char *buff,int root){ int pre = root,p;while(*buff != '\0') {p = root;&

更多“某二叉树如图所示,若进行顺序存储(即用一维数组元素存储该二叉树中的节点且通过下标反映节点间的关系,例如,对于下标为i的节点,其左孩子的下标为2i、右孩子的下标为2i+1),则该数组的大小至少为 (请作答此空) ;若采用三叉链表存储该二叉树(各个节点包括节点的数据、父节点指针、左孩子指针、右孩子指针),则该链表的所有节点中空指针的数目为 ( ) 。 ”相关问题
  • 第1题:

    在一个堆的顺序存储中,若一个元素的下标为i(0≤i≤n-1),则它的左孩子元素的下标为【 】。


    正确答案:2i+1
    2i+1 解析:堆的顺序存储是从0开始的,所以其左孩子的元素下标为2i+k,右孩子元素的下标为2i+2。

  • 第2题:

    一棵查找二叉树,其节点A,B,C,D,E,F依次存放在一个起始地址为n(假定地址以字节为单位顺序编号)的连续区域中,每个节点占4字节,前二字节存放节点值,后二字节依次放左指针、右指针。

    若该查找二叉树的根节点为E,则它的一种可能的前序遍历为(20),相应的层次遍历为(21)。在以上两种遍历情况下,节点c的左指针LC的存放地址为(22),LC的内容为(23)。节点A的右指针RA的内容为(24)。

    A.EAFCBD

    B.EFACDB

    C.EABCFD

    D.EACBDF


    正确答案:D

  • 第3题:

    一个具有m个结点的二叉树,其二叉链表结点(左、右孩子指针分别用left和right表示)中的空指针总数必定为(57)个。为形成中序(先序、后序)线索二叉树,现对该二叉链表所有结点进行如下操作:若结点p的左孩子指针为空,则将该左指针改为指向p在中序(先序、后序)遍历序列的前驱结点;若p的右孩子指针为空,则将该右指针改为指向p在中序(先序、后序)遍历序列的后继结点。假设指针s指向中序(先序、后序)线索二叉树中的某结点,则(58)。

    A.m+2

    B.m+1

    C.m

    D.m-1


    正确答案:B

  • 第4题:

    在二叉树的顺序存储中,每个结点的存储位置与其父结点、左右子树结点的位置都存在一个简单的映射关系,因此可与三叉链表对应。若某二叉树共有n个结点,采用三叉链表存储时,每个结点的数据域需要d个字节,每个指针域占用4个字节,若采用顺序存储,则最后一个结点的下标为k(起始下标为1),那么(39)时采用顺序存储更节省空间。

    A.

    B.

    C.

    D.


    正确答案:A
    解析:采用三叉链表存储二叉树时,每个结点需要占用d+4*3个字节,n个结点则需要 n(d+12)。若顺序存储最后一个结点的下标为k,则共需kd个字节。显然,kdn(d+12)时采用顺序存储更节省空间,即要求(作图)。

  • 第5题:

    对下图所示的二叉树进行顺序存储(根结点编号为1,对于编号为i的结点,其左孩子结点为2i,右孩子结点为2i+1)并用一维数组BT来表示。已知结点X、E和D在数组BT中的下标为分别为1、2、3,可推出结点G、K和H在数组BT中的下标分别为( )。

    A.10、11、12
    B.12、24、25
    C.11、12、13
    D.11、22、23

    答案:D
    解析:
    按照“左孩子结点为2i,右孩子结点为2i+1”,且E=2的原则带入图中元素计算。

  • 第6题:

    设某二叉树采用二叉链表表示(即结点的两个指针分别指示左、右孩子)。当该二叉树包含 k 个节点时,其二叉链表节点中必有(59)个空的孩子指针。

    A.k-1
    B.K
    C.k+1
    D.2k

    答案:C
    解析:

  • 第7题:

    某二叉树如图所示,若进行顺序存储(即用一维数组元素存储该二叉树中的结点且通过下标反映结点间的关系,例如,对于下标为i的结点,其左孩子的下标为2i、右孩子的下标为2i+1),则该数组的大小至少为(58);若采用三叉链表存储该二叉树(各个结点包括结点的数据、父结点指针、左孩子指针、右孩子指针),则该链表的所有结点中空指针的数目为(59)。

    A.6
    B.8
    C.12
    D.14

    答案:B
    解析:
    采用顺序存储结构存储二叉树时,一般的二叉树也必须按照完全二叉树的形式存储,需要填上一些不存在的“虚结点”。题中二叉树的高度为4,需要的存储空间为24-1=15,如下:可见,空指针的数目为8。

  • 第8题:

    在对二叉树进行顺序存储时,若下标为6的结点P既有双亲结点,又有左孩子结点和右孩子结点,则P的双亲结点的下标为(),左孩子结点的下标为(),右孩子结点的下标为()


    正确答案:3;12;13

  • 第9题:

    在一个堆的顺序存储中,若一个元素的下标为i,则它的左孩子元素的下标为(),右孩子元素的下标为()。


    正确答案:2i+1;2i+2

  • 第10题:

    要想删除1个链表中的节点,必须的操作包括:()

    • A、判断该节点是否是头节点
    • B、删除该节点
    • C、将前1节点的指针指向被删除节点的后1节点
    • D、将被删除节点的指针设为空

    正确答案:A,B,C

  • 第11题:

    填空题
    在对二叉树进行顺序存储时,若下标为6的结点P既有双亲结点,又有左孩子结点和右孩子结点,则P的双亲结点的下标为(),左孩子结点的下标为(),右孩子结点的下标为()

    正确答案: 3,12,13
    解析: 由二叉树的性质⑤可知,若对任一完全二叉树上的所有结点按层从左向右编号,则结点编号之间的数值关系可以准确地反映结点之间的逻辑关系。因此,对于完全二叉树的顺序存储来说,采用的是“以编号为地址”的策略将结点存入作为顺序存储结构的一维数组,即将编号为i的结点存入一维数组的第i个单元。利用二叉树的性质⑤可求出结果

  • 第12题:

    多选题
    要想删除1个链表中的节点,必须的操作包括:()
    A

    判断该节点是否是头节点

    B

    删除该节点

    C

    将前1节点的指针指向被删除节点的后1节点

    D

    将被删除节点的指针设为空


    正确答案: A,C
    解析: 暂无解析

  • 第13题:

    若一棵二叉树中只有叶节点和左、右子树皆非空的节点,设叶节点的个数为1,则左、右子树皆非空的节点个数为【 】。


    正确答案:×
    0 解析:根据二叉树的性质:叶子节点数为双分支节点数加1。本题叶节点为1,所以双分支节点(左、右子树皆非空的节点)为0。

  • 第14题:

    用数组A[1...n)顺序存储完全二叉树的各节点,则当i>0,且看i<=______时,节点A[i]的右子女是节点A[2i+1) ,否则节点A[i]没有右子女。


    正确答案:[(n-1)/2]
    [(n-1)/2] 解析:根据完全二叉树的定义及顺序存储结构的特点,可知答案为[(n-1)/2]。

  • 第15题:

    在对二叉树进行顺序存储时,若它的下标为5的节点既有双亲节点,又有左子女节点和右子女节点,它的双亲节点的下标为【 】。


    正确答案:2
    2 解析:设它的双亲节点下标是i,则它的左孩子的下标为2i+1,右孩子的下标为2i+2。要找下标为5的节点的双亲,即2i+1=5,所以i=2。

  • 第16题:

    二叉树如右图所示,若进行顺序存储(即用一维数组元素存储该二叉树中的结点且通过下标反映结点间的关系,例如,对于下标为i的结点,其左孩子的下标为2i、右孩子的下标为2i+1),则该数组的大小至少为( );若釆用三叉链表存储该二叉树(各个结 点包括结点的数据、父结点指针、左孩子指针、右孩子指针),则该链表的所有结点中空指针的数目为( )。

    A.6 B.10 C.12 D.15 A.6 B.8 C.12 D.14


    正确答案:D,B

  • 第17题:

    前序遍历和中序遍历结果相同的二叉树是()。

    A.所有节点只有左子树的二叉树
    B.所有节点只有右子树的二叉树
    C.根节点无左孩子的二叉树
    D.根节点无右孩子的二叉树

    答案:B
    解析:
    前序遍历是首先访问根节点,然后前序遍历左子树,最后前序遍历右子树。中序遍历是首先中序遍历左子树,然后访问根节点,最后中序遍历右子树。当所有节点都没有左子树时,前序遍历和中序遍历的遍历结果相同。

  • 第18题:

    某二叉树如图所示,若进行顺序存储(即用一维数组元素存储该二叉树中的结点且通过下标反映结点间的关系,例如,对于下标为i的结点,其左孩子的下标为2i、右孩子的下标为2i+1),则该数组的大小至少为(请作答此空);若采用三叉链表存储该二叉树(各个结点包括结点的数据、父结点指针、左孩子指针、右孩子指针),则该链表的所有结点中空指针的数目为( )。

    A.6
    B.10
    C.12
    D.15

    答案:D
    解析:
    采用顺序存储结构存储二叉树时,一般的二叉树也必须按照完全二叉树的形式存储,需要填上一些不存在的"虚结点"。题中二叉树的高度为4,需要的存储空间为24-1=15,如下:

    可见,空指针的数目为8。

  • 第19题:

    若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。在这种存储结构中有()个指针是空指针。


    正确答案:n+1

  • 第20题:

    静态链表中指针表示的是().

    • A、内存地址
    • B、数组下标
    • C、下一元素地址
    • D、左、右孩子地址

    正确答案:C

  • 第21题:

    假定一棵二叉树顺序存储在一维数组a中,则a[i]元素的左孩子元素为(),右孩子元素为(),双亲元素(i>1)为()。


    正确答案:a[2*i];a[2*i+1];a[i/2]

  • 第22题:

    填空题
    在一个堆的顺序存储中,若一个元素的下标为i,则它的左孩子元素的下标为(),右孩子元素的下标为()。

    正确答案: 2i+1,2i+2
    解析: 暂无解析

  • 第23题:

    填空题
    若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。在这种存储结构中有()个指针是空指针。

    正确答案: n+1
    解析: 暂无解析