2019-12-22
/*
* 递归创建二叉树
*
*
*/
#include <iostream>
using namespace std;
struct Tree {
int date ;
struct Tree *L , *R ;
};
//函数insert ,将节点插入二叉树
void Insert(Tree *&proot ,Tree *pnode)
{
if(proot== NULL){
proot =pnode ; //将节点pnode 插入根节点
}
else {
//如果pnode 节点 数据小于 proot 插入左子树
if(proot->date >=pnode->date){
Insert(proot->L,pnode) ;
}
else{
Insert(proot->R,pnode) ;
}
}
}
//输出二叉树
void print(Tree *proot)
{
if(proot == NULL){
return ;
}
print(proot->L) ; //输出坐子树的内容
cout<<proot->date<<endl ;
print(proot->R) ;
}
int main()
{
struct Tree *proot =NULL ,*pnode =NULL ;
cout<<"请输入要插入节点的数据 "<<endl ;
cout<<"如果输入-1表示插入过程结束"<<endl ;
int temp ;
cin>>temp ;
while(temp!=-1){
pnode = new Tree ;
pnode->date=temp ;
pnode->L=NULL ;
pnode->R=NULL ;
Insert(proot,pnode) ;
cout<<"请输入要插入节点的数据 "<<endl ;
cout<<"如果输入-1表示插入过程结束"<<endl ;
cin>>temp ;
}
if(proot==NULL)
cout<<"这是一颗空树" <<endl ;
else {
print(proot) ;
}
}