/*//Rebuild
#include<iostream>
#include<cstring>
using namespace std;
typedef struct BinaryNode
{
char data;
BinaryNode *lchild,*rchild;
}*BinaryTree;
void Rebuild(char *PreOrder,char *InOrder,BinaryTree *T,int TreeLen)
{
int LeftLen,RightLen;
char *LeftEnd;
BinaryTree temp;
if(!PreOrder||!InOrder||!T)
return;
if(!(temp=(BinaryNode *)malloc(sizeof(BinaryNode))))
return ;
temp->data=*PreOrder;
temp->lchild=temp->rchild=NULL;
*T=temp;
if(TreeLen==1)
return;
LeftEnd=InOrder;
while(*LeftEnd!=*PreOrder)
{
LeftEnd++;
}
LeftLen=(int)(LeftEnd-InOrder);
RightLen=TreeLen-LeftLen-1;
if(LeftLen)
Rebuild(PreOrder+1,InOrder,&(temp->lchild),LeftLen);
if(RightLen)
Rebuild(PreOrder+LeftLen+1,InOrder+LeftLen+1,&(temp->rchild),RightLen);
}
void PostOrder(BinaryTree t)
{
if(t)
{
PostOrder(t->lchild);
PostOrder(t->rchild);
cout<<t->data<<" ";
}
}
int main()
{
char Preorder[20],Inorder[20];
BinaryTree Tree;
cin>>Preorder;
cin>>Inorder;
Rebuild(Preorder,Inorder,&Tree,strlen(Preorder));
PostOrder(Tree);
return 0;
}
重建二叉树
最新推荐文章于 2025-03-31 21:54:50 发布