二次作业答案_精品文档_精品文档Word文档下载推荐.doc
《二次作业答案_精品文档_精品文档Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《二次作业答案_精品文档_精品文档Word文档下载推荐.doc(9页珍藏版)》请在冰豆网上搜索。
元素3456586394
比较次数21344
3.
左子树为空的所有单支结点:
15,23,42,44
右子树为空的所有单支结点:
30
4.
插入时造成不平衡的结点个数:
4
5.
结点abcde
出度11212
入度22111
6.
(1)1,3,4,6,5,2(3分)
(2)1,3,2,4,5,6(3分)
五、算法分析题
利用"
栈"
作为辅助存储,将队列中的元素逆置(即相反次序放置)。
(1)q=q->
lLink
(2)return1
(3)return0
1→2
1→3
2→3
4.
(1)returnPT
(2)(PT=ParentPtr(BT->
right,BT,X))
(3)returnNULL或return0
六、算法设计题
floatpoly(floatx,floatA[],intn){
if(!
n)returnA[0];
elsereturnx*poly(x,A,n-1)+A[n];
}
intBTreeHeight(BinTreeNode*BT)
{
if(BT==NULL)
//对于空树,返回-1并结束递归
return–1;
else
{
//计算左子树的高度
inth1=BTreeHeight(BT->
left);
//计算右子树的高度
inth2=BTreeHeight(BT->
right);
//返回树的高度
if(h1>
h2)returnh1+1;
elsereturnh2+1;
}
}
intBTreeLeafCount(BinTreeNode*BT)
if(BT==NULL)return0;
elseif(BT->
left==NULL&
&
BT->
right==NULL)return1;
elsereturnBTreeLeafCount(BT->
left)+BTreeLeafCount(BT->
数据结构第三次作业答案
1.D2.A3.B4.C5.C6.A
7.B8.C9.C10.A11.A12.D13.C
1.2i+12.最大值3.20.54.右子树5.1
6.右单旋转7.2(n-1)8.29.n-110.高11.直接插入
1.错2.对3.对4.对5.错6.对7.错8.对
(1)1,5,6,4,3,2
(2)1,5,3,2,6,4
顶点:
0123456
路径长度:
0161014252131
拓扑序列:
1,3,6,0,2,5,4,7
所有关键活动:
<
0,1>
5,<
1,3>
10,<
3,4>
9,<
4,5>
12
关键路径长度:
36
(1)归并路数:
5
(2)需要归并躺数:
答案解释:
(1)设归并路数为k,初始归并段个数m=80,根据归并趟数计算公式S=é
logkmù
=é
logk80ù
=3得:
k3≥80。
由此解得k≥5,即应取的归并路数至少为5。
(2)设多路归并的归并路数为k,需要k个输入缓冲区和1个输出缓冲区。
1个缓冲区对应1个文件,有k+1=15,因此k=14,可做14路归并。
由S=é
log1480ù
=2。
即至少需2趟归并可完成排序。
算法功能:
当BT中每个结点的左子女的值大于右子女的值则交换左右子树。
(1)’t’
(2)’g’
(3)’g’
(4)’e’
{35,54,42,73,80,38}
判断p2单链表所代表的集合是否为p1单链表所代表的集合的子集合,若是则返回1否则返回0。
判断二叉树bt是否为一棵二叉搜索树,若是则返回1否则返回0。
intBTreeEqual(BinTreeNode*T1,BinTreeNode*T2)
//若两棵树均为空则返回1表示相等
if(T1==NULL&
T2==NULL)return1;
//若一棵为空一棵不为空则返回0表示不等
elseif(T1==NULL||T2==NULL)return0;
//若根结点值相等并且左、右子树对应相等则两棵树相等
elseif(T1->
data==T2->
data&
BTreeEqual(T1->
left,T2->
left)&
BTreeEqual(T1->
right,T2->
right))
return1;
//若根结点值不等或左、右子树对应不等则两棵树不等
else
return0;
另一个参考答案:
//若两棵树均为空或实际上是同一棵树时返回1表示相等
if(T1==T2)return1;
if(T1==NULL||T2==NULL)return0;
//若根结点值不等返回0表示不等
if(T1->
data!
=T2->
data)return0;
//若根结点值相等则两棵树是否相等取决于它们的左、右子树是否对应相等
returnBTreeEqual(T1->
BTreeEqual(T1->
BinTreeNode*BTreeCopy(BinTreeNode*BT)
if(BT==NULL)returnNULL;
else{
//得到新结点
BinTreeNode*pt=newBinTreeNode;
//复制根结点值
pt->
data=BT->
data;
//复制左子树
left=BTreeCopy(BT->
//复制右子树
right=BTreeCopy(BT->
//返回新树的树根指针
returnpt;
说明:
函数体中的else可以没有
intBinSearch(ElemTypeR[],intn,KeyTypeK)
{
intlow=0,high=n-1;
while(low<
=high)
{
intmid=(low+high)/2;
if(K==R[mid].key)returnmid;
elseif(K<
R[mid].key)high=mid-1;
elselow=mid+1;
}
return-1;
}
数据结构第四次作业答案
1.C2.B3.A4.C5.C6.C
7.C8.C9.B10.D11.C12.C
1.二路归并2.n/23.O(nlog2n)4.O(n2)5.3
6.关键码7.稀疏8.5009.n/m10.511.m-1
1.错2.错3.对4.对5.对6.错7.错8.错
(0)[362525*624053]
(1)[25*25]36[624053]
(2)25*2536[5340]62
(3)25*2536405362