#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class BST
{
private:
double value;
BST * leftNode;
BST * rightNode;
public:
BST(double v)
{
this->value=v;
this->leftNode=NULL;
this->rightNode=NULL;
}
~BST()
{
}
void addNode(double v) //添加节点
{
if(v<this->value)
{
if(this->leftNode==NULL)
{
this->leftNode=new BST(v);
}
else
{
this->leftNode->addNode(v);
}
}
else
{
if(this->rightNode==NULL)
{
this->rightNode=new BST(v);
}
else
{
this->rightNode->addNode(v);
}
}
}
void walktree() //遍历BST树
{
if(this->leftNode!=NULL)
{
this->leftNode->walktree();
}
cout<<" "<<this->value;
if(this->rightNode!=NULL)
{
this->rightNode->walktree();
}
}
};
int main()
{
cout << "This is a bst search algorithm, enter your number sequence line by line, end with a dot(.) or empty line:" << endl;
string mystr;
double value;
BST* tr=NULL;
do
{
getline(cin,mystr);
if(mystr=="."||mystr=="")
break;
stringstream(mystr) >> value;
if(tr==NULL)
{
tr=new BST(value);
}
else
{
tr->addNode(value);
}
}while(true);
cout<<"After BST sorting, you got the following sequence:/n";
tr->walktree();
return 0;
}