今天学习树结构,自己写了一个树模版o(∩_∩)o
#define MAXN 1000
#define MAXNUM 0x3fffffff
// #define Type char
template<typename Type>
struct node
{
Type root;
node *left,*right;
};
template<typename Type>
class tree
{
node<Type>* head;
unsigned int tree_size;
public:
tree();
node<Type> *create();
void destory();
void NLR(node<Type> *);
void LNR(node<Type> *);
void LRN(node<Type> *);
unsigned int size();
node<Type> *root();
};
template<typename Type> tree<Type>::tree()
{
tree_size=0;
head=new node<Type>;
head->left=head->right=NULL;
head=create();
}
template<typename Type>void tree<Type>::destory()
{
if(!head)
return;
node *left=head->left;
node *right=head->right;
delete head;
head=left;
if(head)
destory();
head=right;
if(head)
destory();
}
template<typename Type>node<Type> *tree<Type>::create()
{
node<Type> *new_node=new node<Type>;
Type x;
cin>>x;
new_node->root=x;
if(x=='0')
new_node=NULL;
else
{
++tree_size;
new_node->left=create();
new_node->right=create();
}
return new_node;
}
template<typename Type>void tree<Type>::NLR(node<Type> *temp)
{
if(temp)
{
cout<<temp->root;
NLR(temp->left);
NLR(temp->right);
}
}
template<typename Type>void tree<Type>::LNR(node<Type> *temp)
{
if(temp)
{
LNR(temp->left);
cout<<temp->root;
LNR(temp->right);
}
}
template<typename Type>void tree<Type>::LRN(node<Type>*temp)
{
if(temp)
{
LRN(temp->left);
LRN(temp->right);
cout<<temp->root;
}
}
template<typename Type>unsigned int tree<Type>::size()
{
return tree_size;
}
template<typename Type>node<Type> *tree<Type>::root()
{
return head;
}