#include "iostream"
using namespace std;
typedef struct da //二叉树的结构定义
{
int num; //值域
struct da *left,*right; //指针域
}dat,*data;
data build(data temp) //建立二叉树
{
int i = 0; //控制值域
cin>>i;
if(i == 0) //把i = 0设为二叉树一条支链的结束标志
temp = NULL;
else
{
temp = new dat; //建立动态内存
temp ->num = i; //将i存入动态内存中
temp ->left = build(temp ->left); //递归节点的左子树
temp ->right = build(temp ->right); //递归节点的右子树
}
return temp; //返回头节点
}
void put(data top) //前序遍历
{
if(top) //如果借点不为空
{
cout<<top ->num<<' '; //输出节点内容
put(top -> left); //递归左子树
put(top -> right); //递归右子树
}
}
void put1(data top) //中序遍历
{
if(top)
{
put1(top ->left);
cout<<top ->num<<' ';
put1(top ->right);
}
}
void put2(data top) //后序遍历
{
if(top)
{
put2(top ->left);
put2(top ->right);
cout<<top ->num<<' ';
}
}
void deletedata(data temp) //利用后遍历序删除二叉树
{
if(temp)
{
deletedata(temp ->left);
deletedata(temp ->right);
delete temp; //删除当前节点
}
}
int main()
{
data top = NULL; //申请头节点
top = build(top); //调用函数组建二叉树
put1(top); //使用中序遍历
cout<<endl;
deletedata(top); //删除树
top = NULL; //头节点指针赋空
getchar();
getchar();
return 0;
}