(182) 已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L中序序列:D,J,G,B,E,H, A,C,K,I,L,F。
(1) 写出该二叉树的后序序列; (2) 画出该二叉树;
(3) 求该二叉树的高度(假定空树的高度为-1)和度为2、度为1、及度为0的结点个数。 该二叉树的后序序列为:J,G,D,H,E,B,K,L,I,F,C,A。 该二叉树的形式如图所示:
(183) 设有一组关键字{9,01,23,14,55,20,84,27},采用哈希函数:H(key)=key mod 7 ,表长为10,用Hi=(H(key)+di) mod 10(di=12,22,32,?,)解决冲突。对该关键字序列构造哈希表,
(184) 对于给定的一组记录的关键字{ 23,13,17,21,30,60,58,28,30,90},试分别写出冒泡排序、快速排序、堆排序、归并排序第一趟排序后的结果。
(185) 采用哈希函数H(k)=2*k mod 13并用链地址法处理冲突,在数列地址空间[0..12]中对关键字序列22,41,53,46,30,13,1,67,51构造哈希表。
四、算法设计题(10分) }
(186) 阅读下面的程序,说明程序的具体功能。 typedef int elementype typedef struct node { elemtype data;
strunct node *next; }linklist;
void function( linklist *head, elemtype x ) { linklist *q, *p;
J K D G B E F H I L A C
q=head; p=q-next;
while (p !=NULL) && (p->data != x ) { q=p; p=p->next; }
if (q==NULL) printf (“there is no this node ::\\n”); else { q ->next =p ->next ; free (p); } }
设哈希(Hash)表的地址范围为0~17,哈希函数为:H(K)=K K为关键字,用线性探测法再散列法处理冲突,输入关键字序列: (10,24,32,17,31,30,46,47,40,63,49) 造出Hash表,试回答下列问题: 画出哈希表的示意图;
若查找关键字63,需要依次与哪些关键字进行比较? 若查找关键字60,需要依次与哪些关键字比较?
假定每个关键字的查找概率相等,求查找成功时的平均查找长度。
MOD 16。