描述
由于先序、中序和后序序列中的任一个都不能唯一确定一棵二叉树,所以对二叉树做如下处理,将二叉树的空结点用·补齐,如图所示。我们把这样处理后的二叉树称为原二叉树的扩展二叉树,扩展二叉树的先序和后序序列能唯一确定其二叉树。
现给出扩展二叉树的先序序列,要求输出其中序和后序序列。
格式
输入格式
扩展二叉树的先序序列。
输出格式
输出其中序和后序序列。
样例
输入样例
ABD…EF…G…C…
输出样例
DBFEGAC
DFGEBCA
限制
时间限制: 1000 ms
内存限制: 65536 KB
#include<bits/stdc++.h>
using namespace std;
struct node{
char data;
node* rchild;
node* lchild;
};
void create(node* &root){
char c;
scanf("%c",&c);
if(c=='.') root=NULL;
else{
root=new node;
root->data=c;
create(root->lchild);
create(root->rchild);
}
}
void inorder(node* root){
if(root==NULL) return;
inorder(root->lchild);
printf("%c",root->data);
inorder(root->rchild);
}
void postorder(node* root){
if(root==NULL) return;
postorder(root->lchild);
postorder(root->rchild);
printf("%c",root->data);
}
int main(){
node* root=new node;
create(root);
inorder(root);
putchar('\n');
postorder(root);
return 0;
}