代码如下:
// CreateBinaryTree1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct node
{
char data;
struct node *lchild;
struct node *rchild;
} treenode;
treenode* CreateBinTree()
{
char x;
cin>>x;
treenode* temp;
if ('$'==x)
{
temp=NULL;
}
else
{
temp = new treenode;
temp->data = x;
temp->lchild=CreateBinTree();
temp->rchild=CreateBinTree();
}
return temp;
}
//前序遍历
void preorder(treenode* p)
{
if(p!=NULL)
{
cout<<p->data<<" ";
preorder(p->lchild);
preorder(p->rchild);
}
}
//中序遍历
void midorder(treenode* p)
{
if(p!=NULL)
{
midorder(p->lchild);
cout<<p->data<<" ";
midorder(p->rchild);
}
}
//后序遍历
void postorder(treenode* p )
{
if(p!=NULL)
{
postorder(p->lchild);
postorder(p->rchild);
cout<<p->data<<" ";
}
}
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"请以先根遍历输入一序列,$表示空:\n";
treenode *root = CreateBinTree();
cout<<"前序遍历: ";
preorder(root);
cout<<endl;
cout<<"中序遍历:";
midorder(root);
cout<<endl;
cout<<"后序遍历:";
postorder(root);
cout<<endl;
system("pause");
return 0;
}