设二叉树采用二义链表表示,指针root指向根结点,试编写一个在二叉树中查找值为x的结点,并打印该结点所有祖先结点的算法。在此算法中,假设值为x的结点不多于一个.
第3题
【题目描述】
(4)在有n个结点的二叉树的llink-rlink 法存储表示中,必定有【4】个空指针。
(S)m阶B+树的每个非叶结点(除根外)至少有【5】个子女。
【我提交的答案】:
【参考答案分析】:(4)n+1
(5)[m/2]
【我的疑问】(如下,请求专家帮助解答)
第四小题是啥原因呢??神门!11
第4题
【题目描述】
●n个结点的二叉树,若用二叉链表作为存贮结构,则左、右子链域的总数为 (45) 个,其中 (46) 个用于链接子结点, (47) 个空闲着。
(45) A.n
B.n-1
C.n+1
D.n-2
(46) A.n-1
B.n
C.n+1
D.n-2
(47) A.n+10
B.n
C.n+1
D.n+9
问题1【我提交的答案】: A |
【参考答案与解析】: 正确答案:B |
问题2【我提交的答案】: D |
【参考答案与解析】: 正确答案:A |
问题3【我提交的答案】: A |
【参考答案与解析】: 正确答案:C |
【解析】①二叉树中每个结点有两个子链域,故n个结点有n-1个左、右子链域。②除根结点之外,其他每个结点都有且仅有一个分支,故n个结点的二叉树中有n-1个分支;而这些分支是由上一层结点的子链域发出的,因此n个结点的二叉树中有n-1个链域链接孩子。③空闲的孩子链域数=2n-(n-1)=n+1。
【我的疑问】(如下,请求专家帮助解答)
二叉链树有n个节点 那应该有2n个子链域 为什么是n-1?
n个节点有n-1个分支? 请大家为我解答下 谢谢了
第7题
(1)编写一个算法,从任一给定的位置(pr,p)开始,将指针p右移k个结点。如果p移出链表,则将p为0,并让pr停留在链表最右边的结点上。
(2)编写一个算法,从任一给定的位置(pr,p)开始,将指针p左移k个结点。如果p移出链表,则将p置为0,并让pr停留在链表最左边的结点上。
第8题
第10题
A.太学是中国古代的的一种大学,始设予汉代,为中央官学、最高学府。隋代以后改为国子监,面国子监内同时也设太学。宋代太学仍为最高学府,隶国于监。
B.冠,指古代男子二十岁行加冠礼,也称弱冠,表示成年。冠礼在宗庙里进行,一般由指定的贵宾给行加冠礼的青年加冠。
C.进士,是古代科举会试及第者之称,宋代进士分为三等:一等称进士及第,二等称进士出身,三等赐同进士出身。
D.书是对帝王的呈文,有不同的称呼,如章、奏、表、疏、封事等,封事是预防沿漏的意思,是一种秘密的奏议。
第11题
建立一个链表,链表节点用于存储如下结构体: struct Student { long num; //学号 char name[20]; //姓名 char sex; //性别 float score; //成绩 }; 要求:使用函数和指针进行合理的编程, 1、建立链表 struct SLink { struct Student s; struct SLink *next; } *np; ,并设计如下函数: 1)createLink()生成一个空链表; 2)insertData(struct Student s)按学生学号由小到大的顺序,将s插入到链表合适的位置; 提示:使用np=(struct SLink *) malloc(sizeof(struct SLink)开辟内存以建立新节点。 3)deleteData(long num)删除学号为num的节点。 提示:使用free(np)释放被删除节点的内存; 4)printLink()顺序打印输出链表各节点的内容。 2、上传调试成功的源代码及说明,供评阅者进行运行测试,并评价得分。