数据结构第六章 树和二叉树课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章课后习题
6、1、各层的结点数目是:K
2、编号为n的结点的双亲结点是:<=(n-2)/k的最大整数
3、编号为n的结点的第i个孩子结点编号是:k*(n-1)+1+i
4、编号为n的结点有右兄弟的条件是:(n-1)能被k整除
右兄弟的编号是:n+1.
7、1、先序序列和中序序列相同:空二叉树或没有左子树的二叉树。
2、中序序列和后序序列相同:空二叉树或没有右子树的二叉树。
3、先序序列和后序序列相同:空二叉树或只有根的二叉树。
9、中序序列:BDCEAFHG和后序序列:DECBHGFA的二叉树为:
A
B F
C G
D E H
先序序列:ABCDEFGH
算法设计:
3、typedef struct
{
int data[100];
int top;
}seqstack;
seqstack *s;
Perorder(char a[],int n)
{
int i=1,count=1;
s->top=-1;
if(n==0)return(0);
else
{
if(I<=n)
{
s->top++;
s->data[s->top]=a[I];
}
while(count { printf(“%c”,s->data[s->top]); count++; s->top--; if(s->data[s->top]);==a[i]) { printf(“%c”,s->data[s->top]); count++; s->top--; } if((2*i+1) { i=2*i; s->top++; s->data[s->top]=a[i+1]; s->top++; s->data[s->top]=a[i]; } else if(a*i { i=2*i; s->top++; s->data[s->top]=a[i]; } else if(i/2%2==1)i=i/2/2+1; else i=i/2+1; } } } main() { char A[]=“kognwyuvb”; int n=strlen(A); s=(seqstack *)malloc(sizeof(seqstack)); printf(“\n”); Perorder(A,n); }