代码如下,姑且从一个叫做tree.in的文件中读取数据,在cout中输出,每个输出占单独一行。
函数功能基本就不用说明了吧(要说明可以在追问中提出来)
#include<fstream>
#include<iostream>
typedef unsigned int uint;
using namespace std;
ifstream fin("tree.in");
class BST
{
private:
struct Node
{
uint value;
Node * lChild, * rChild;
Node(uint v = 0,Node * l = NULL,Node * r = NULL)
{
value = v;lChild = l;rChild = r;
}
~Node(){}
};
Node * root;
void clear(Node * r)
{
if(r==NULL)
return ;
clear(r->lChild);
clear(r->rChild);
delete r;
}
void insert(uint value,Node *& r)
{
if(r==NULL)
{
r = new Node(value);
return ;
}
if(value<r->value)
{
insert(value,r->lChild);
}
else insert(value,r->rChild);
}
void tranverse(Node * r,ostream & out)
{
if(r==NULL)
return ;
tranverse(r->lChild,out);
out<<r->value<<endl;
tranverse(r->rChild,out);
}
public:
BST()
{
root = NULL;
}
~BST()
{
clear(root);
}
void insert(uint value)
{
insert(value,root);
}
void tranverse(ostream & out)
{
tranverse(root,out);
}
};
int main()
{
BST bst;
uint tmp;
for(int i=0;i<50;i++)
{
fin>>tmp;
bst.insert(tmp);
}
bst.tranverse(cout);
return 0;
}
二叉树 插入
最新推荐文章于 2024-08-21 19:11:58 发布