您的位置:首页 > 其它

一个功能简单的二叉树模板

2012-11-11 15:30 351 查看
目前仅仅建议使用char类型数据,因为之前cin.fail()函数处理失败,有点小迷惑,所以暂时改用了固定无效字符限定的形式处理。

麻雀虽小,五脏俱全,这里面该处理的基本上都包含了。

#include <iostream>

using namespace std;
template<class T>
class BTree
{
private:
class Node
{
public:
T element;//Can be optimized
Node *LTree;
Node *RTree;
};
Node *root;
bool creat(Node *&root);
void show(Node *root)const;//Read Only
bool B_Delete(Node *&root);
public:
BTree();
~BTree();
void BTShow();
bool BTCreat();
void BTDelete();
};
template<class T>
BTree<T>::BTree()
{
root=NULL;
}
template<class T>
BTree<T>::~BTree()
{
B_Delete(root);
}
template<class T>
bool BTree<T>::BTCreat()
{
if(creat(root));
return true;
return false;
}
template<class T>
bool BTree<T>::creat(Node *&root)
{
T tempaval;
cin>>tempaval;
if(tempaval!='#')
{
root=new Node;
if(!root)
{
root=NULL;
return false;
}
root->element=tempaval;
if(!creat(root->LTree))
root->LTree=NULL;
if(!creat(root->RTree))
root->RTree=NULL;
}
else
return false;
return true;
}
template<class T>
bool BTree<T>::B_Delete(Node *&root)
{
if(root)
{
B_Delete(root->LTree);
B_Delete(root->RTree);
cout<<root->element<<ends;
delete root;
return true;
}
else
return false;
}
template<class T>
void BTree<T>::show(Node *root)const
{
if(root)
{
cout<<root->element<<ends;
show(root->LTree);
show(root->RTree);
}
else
return;
}
template<class T>
void BTree<T>::BTShow()
{
show(root);
}
int main()
{
BTree<char> temp1;
temp1.BTCreat();
temp1.BTShow();
cout << "Hello world!" << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: