数据结构,二叉树遍历序列还原,c语言实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

// }
// PrintTreeNode(T->Left);
// PrintTreeNode(T->Right);
// }
//}
//{
// if(T != NULL){
// if(T->Left != NULL){
//
printf("%c",T->Left->Element);
// }
// if(T->Right != NULL){
// PrintTreeNode(T->Right);
// }
//}
//{
// if(T != NULL){
// if(T->Left != NULL){
//
printf("%c",T->Left->Element);
// }
// if(T->Right != NULL){
//
printf("%c",T->Right->Element);
char Element; struct BiTreeNode *Left; struct BiTreeNode *Right; }*BiTree; BiTree node[110];
char in[110],post[110]; int cnt=0,len;
void Create(BiTree &T,int begin,int end,int num) {
// for(i=begin; i<=end; i++){
//
if(in[i] == post[len]){
//
flag = 0;
//
break;
//
}
// }
// if(!flag ){
//
T = (BiTreeNode*)malloc( sizeof( struct BiTreeNode ) );
//
Create(T->Right,i+1,end,len-1);
//
}
//
// }
// }
// else{
// T->Left = NULL;
// T->Right = NULL;
// }
}
void PrintTreeNode(BiTree T,BiTree *node)
{
node = (BiTree*)malloc(sizeof (BiTreeNode ) * 110);
//
printf("%c",T->Right->Element);
// }
// PrintTreeNode(T->Left);
// PrintTreeNode(T->Right);
// }
//}
}
front++;
}
front=0;
while(front<rear){
printf("%c",node[front++]->Element);
}
printf("\n");
}
//{
// if(T != NULL){
// if(T->Left != NULL){
//
printf("%c",T->Left->Element);
// }
// if(T->Right != NULL){
//
printf("%c",T->Right->Element);
// }
// PrintTreeNode(T->Left);
// PrintTreeNode(T->Right);
// }
来自百度文库
//}
int main() {
BiTree T; gets(in); gets(post); len = strlen(post); len--; Create(T,0,len,len); PrintTreeNode(T,node);
int front=0,rear=0;
node[rear++] = T;
while(front<rear){
if(node[front]->Left!=NULL){
node[rear++] = node[front]->Left;
}
if(node[front]->Right!=NULL){
node[rear++] = node[front]->Right;
} //{ // if(T != NULL){
// if(T->Left != NULL){
//
printf("%c",T->Left->Element);
// }
// if(T->Right != NULL){
//
printf("%c",T->Right->Element);
// }
// PrintTreeNode(T->Left);
T->Left = NULL;
T->Right = NULL;
cnt++;
if(i+1<=end)
Create(T->Right,i+1,end,len-cnt);
if(begin<=i-1)
Create(T->Left,begin,i-1,len-cnt);
// if(len>=0 && end>begin){
} if(len>=0 && end>begin){
for(i=begin; i<=end; i++){
if(in[i] == post[num]){ break;
} } } T = (BiTreeNode*)malloc( sizeof( BiTreeNode ) );
T->Element = post[num];
int i; if(end == begin){
T = (BiTreeNode*)malloc( sizeof( struct BiTreeNode ) ); T->Element = in[begin]; T->Left = NULL; T->Right = NULL;
cnt++; return;
/**************************************************** 中序+后序,还原二叉树************************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct BiTreeNode {
//
T->Element = post[len];
//
T->Left = NULL;
//
T->Right = NULL;
//
//
Create(T->Left,begin,i-1,len-1);
//
}
//
for(int j=i+1; j<len; j++){
//
if(in[j] == post[len-1])
相关文档
最新文档