第六章课后习题
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<n)
{
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)<n)
{
i=2*i;
s->top++;
s->data[s->top]=a[i+1];
s->top++;
s->data[s->top]=a[i];
}
else if(a*i<n)
{
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);
}。