#include<iostream>
using namespace std;
/*-------二叉树的二叉链表存储表示-------*/
typedef struct BiTNode
{
char data; //结点数据域
BiTNode *lchild,*rchild; //左右孩子指针
}*BiTree;
/*-------先序遍历的顺序建立二叉链表-------*/
void CreateBiTree(BiTree &T)
{
char ch;
cin>>ch;
if(ch=='#') //递归结束,建空树
T=NULL;
else //递归创建二叉树
{
T=new BiTNode; //生成根结点
T->data=ch; //根结点数据域置为ch
CreateBiTree(T->lchild); //递归创建左子树
CreateBiTree(T->rchild); //递归创建右子树
}
}
/*-------先序遍历的递归算法-------*/
void PreorderTraverse(BiTree T)
{
if(T) //若二叉树非空
{
cout<<T->data; //访问根结点
PreorderTraverse(T->lchild); //先序遍历左子树
PreorderTraverse(T->rchild); //先序遍历右子树
}
}
int main()
{
BiTree T;
CreateBiTree(T);
PreorderTraverse(T);
cout<<endl;
return 0;
}