#include<iostream>
using namespace std;
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void initBiTree(BiTree &T)
{
T = new BiTNode;
T->data = 'a';
T->lchild = NULL;
T->rchild = NULL;
}
void createBiTree(BiTree &T)
{
char ch;
cin>>ch;
if(ch=='#') T=NULL;
else{
T = new BiTNode;
T->data = ch;
createBiTree(T->lchild);
createBiTree(T->rchild);
}
}
int depth(BiTree T)
{
int m=0,n=0;
if(T==NULL) return 0;
else
{
m = depth(T->lchild);
n = depth(T->rchild);
if(m>n) return(m+1);
else return(n+1);
}
}
void InOrderTraverse(BiTree &T)
{
if(T){
InOrderTraverse(T->lchild);
cout<<T->data<<" ";
InOrderTraverse(T->rchild);
}
}
void PreOrderTraverse(BiTree &T)
{
if(T){
cout<<T->data<<" ";
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void PostOrderTraverse(BiTree &T)
{
if(T){
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
cout<<T->data<<" ";
}
}
int main()
{
BiTree T;
createBiTree(T);
cout<<"中序遍历的结果是:";
InOrderTraverse(T);
cout<<"\n";
cout<<"先序遍历的结果是:";
PreOrderTraverse(T);
cout<<"\n";
cout<<"后序遍历的结果是:";
PostOrderTraverse(T);
cout<<"\n";
cout<<"二叉树的深度是:"<<depth(T);
}