重要提示:请勿将账号共享给其他人使用,违者账号将被封禁!
查看《购买须知》>>>
首页 > 计算机类考试> 软考(初级)> 程序员
网友您好,请在下方输入框内输入要搜索的题目:
搜题
拍照、语音搜题,请扫码下载APP
扫一扫 下载APP
题目内容 (请给出正确答案)
[主观题]

一棵二叉树如下图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标

一棵二叉树如下图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标为1,若某结点的下标为i,则其左孩子位于下标2i处、右孩子位于下标2i+1处),则该数组的大小至少为(37);若采用二叉链表存储该二叉树(各个结点包括结点的数据、左孩子指针、右孩子指针),则该链表中空指针的数目为(38)。

一棵二叉树如下图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标一棵二叉

A.6

B.10

C.12

D.15

答案
查看答案
更多“一棵二叉树如下图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标”相关的问题

第1题

具有100个结点的二叉树中,若用二叉链表存储,其指针域部分用来指向结点的左、右孩子,其余()个指针域为空。

A.50

B.99

C.100

D.101

点击查看答案

第2题

二叉树的动态二叉链表结构中的每个结点有三个字段:dam,lchild,rchild。其中指针lchild和rchild的
类型为bike。静态二叉链表是用数组作为存储空间,每个数组元素存储二叉树的一个结点,也有三个字段:data,lchild,rchild。所不同的是,lchild和rdhild为integer型,分别用于存储左右孩子的下标,如果没有左右孩子,则相应的值为0。例如,下面左图所示的二又树的静态二叉链表如右图所示。

编写算法由二叉树的动态二叉链表构造出相应的静态二又链表a[1..

点击查看答案

第3题

在线索二叉树中,下面说法不正确的是( )

A.在中序线索树中,若某结点有右孩子,则其后继结点是它的右子树的左支末端结点。

B.线索二叉树是利用二叉树的n+1 个空指针来存放结点前驱和后继信息的。

C.每个结点通过线索都可以直接找到它的前驱和后继

D.在中序线索树中,若某结点有左孩子,则其前驱结点是它的左子树的右支末端结点。

点击查看答案

第4题

一棵具有N个结点的二叉树采用二叉链表进行存储,其中空指针域有()个。

A.N+1

B.N

C.N-1

D.不确定

点击查看答案

第5题

一棵非空二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()。

A.所有的结点均无左孩子

B.所有的结点均无右孩子

C.只有一个叶子结点

D.是一棵满二叉树

点击查看答案

第6题

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句写在对应栏内。 [预备知识] ①对给定的字符
阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句写在对应栏内。

[预备知识]

①对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。例如,给定字符集合{a,b,c,d}及其权值2、7、4、5,可构造如图3所示的最优二叉树和相应的结构数组Ht(数组元素Ht[0]不用)(见表5)。

结构数组HT的类型定义如下:

define MAXLEAFNUM 20

struct node {

char ch; / * 当前结点表示的字符,对于非叶子结点,此域不用*/

int weight; / * 当前结点的权值*/

int parent; / * 当前结点的父结点的下标,为0时表示无父结点*/

int Ichild, rchild

/ *当前结点的左、右孩子结点的下标,为0时表示无对应的孩子结点* /

} Ht[2 * MAXLEAFNUM];

②用'0'或'1'标识最优二叉树中分支的规则是:从一个结点进入其左(右)孩子结点,就用'0'('1')标识该分支(示例如图3所示)。

③若用上述规则标识最优二叉树的每条分支后,从根结点开始到叶子结点为止,按经过分支的次序,将相应标识依次排列,可得到由'0'、'1'组成的一个序列,称此序列为该叶子结点的前缀编码。如图3所示的叶子结点a、b、c、d的前缀编码分别是110、0、111、10。

【函数5.1说明】

函数void LeafCode (int root, int n)的功能是:采用非递归方法,遍历最优二叉树的全部叶子结点,为所有的叶子结点构造前缀编码。其中形参root为最优二叉树的根结点下标;形参 n为叶子结点个数。

在构造过程中,将Ht[p]. weight域用作被遍历结点的遍历状态标志。

【函数5.1】

char * * Hc;

void LeafCode (int root, int n)

{/*为最优二叉树中的n个叶子结点构造前缀编码,root是树的根结点下标* /

int i,p = root,cdlen =0;char code[20];

Hc=(char* * )malloc(.(n +]) *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(He[ p] ,code);

}

}

else if (Ht[ pi, 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结束* /

}

【函数5.2说明】

函数void Decode(char*buff, int root)的功能是:将前缀编码序列翻译成叶子结点的字符序列并输出。其中形参root为最优二叉树的根结点下标;形参buff指向前缀编码序列。

【函数5.2】

void Decode(char * buff, int root)

Iint pre =root,p;

while (* buff! = '\0') {

p = root;

while (p!=0){/*存在下标为p的结点*/

pre=p;

if((4))p=Ht[p].lchild; /*进入左子树*/

else p = Ht[p]. rchild; / *进入右子树*./

buff ++; / * 指向前缀编码序列的下一个字符* /

}

(5);

printf("%c", Ht [ pre]. ch);

}

}

点击查看答案

第7题

阅读以下说明、C函数和问题,将解答填入答题纸的对应栏内。【说明】二叉查找树又称为二叉排序树

阅读以下说明、C函数和问题,将解答填入答题纸的对应栏内。

【说明】

二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:

●若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;

●若它的右子树非空,则其右子树上所有结点的键值均大于根结点的键值;

●左、右子树本身就是二叉查找树。

设二叉查找树采用二叉链表存储结构,链表结点类型定义如下:

typedefstructBiTnode{

intkey_value;/*结点的键值,为非负整数*/

structBiTnode*left,*right;/*结点的左、右子树指针*/

}*BSTree;

函数find_key(root,key)的功能是用递归方式在给定的二叉查找树(root指向根结点)中查找键值为key的结点并返回结点的指针;若找不到,则返回空指针。

【函数】

BSTreefind_key(BSTreeroot,intkey)

{

if((1))

returnNULL;

else

if(key==root->key_value)

return(2);

elseif(keykey_value)

return(3);

else

return(4);

}

【问题1】

请将函数find_key中应填入(1)~(4)处的字句写在答题纸的对应栏内。

【问题2】

若某二叉查找树中有n个结点,则查找一个给定关键字时,需要比较的结点个数取决于(5).

点击查看答案

第8题

用顺序存储的方法,将有n个结点的完全二叉树中所有结点按层逐个顺序存放在一维数组R[n]中,若结点R门有左子女,则其左子女是();若结点R[订]有右子女,则其右子女是(),

A、[2i-1]

B、R[2i]

C、R[2i+1]

D、R[2i+2]

点击查看答案

第9题

设哈夫曼树中共有99个结点,则该树中有_________个叶子结点;若采用二叉链表作为存储结构,则该树中
有_____个空指针域。

点击查看答案
下载APP
关注公众号
TOP
重置密码
账号:
旧密码:
新密码:
确认密码:
确认修改
购买搜题卡查看答案 购买前请仔细阅读《购买须知》
请选择支付方式
  • 微信支付
  • 支付宝支付
点击支付即表示同意并接受了《服务协议》《购买须知》
立即支付 系统将自动为您注册账号
已付款,但不能查看答案,请点这里登录即可>>>
请使用微信扫码支付(元)

订单号:

遇到问题请联系在线客服

请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系在线客服
恭喜您,购买搜题卡成功 系统为您生成的账号密码如下:
重要提示:请勿将账号共享给其他人使用,违者账号将被封禁。
发送账号到微信 保存账号查看答案
怕账号密码记不住?建议关注微信公众号绑定微信,开通微信扫码登录功能
请用微信扫码测试
优题宝