25 个错 , 改死了
#include <iostream>
using namespace std;
template<typename elem_Type>
class Node
{
Node *left,*right;
elem_Type data;
friend class Tree<elem_Type>;
public:
Node(elem_Type temp=NULL)
{
left=right=NULL;
data=temp;
}
};
template <typename elem_Type>
class Tree
{
public:
Tree(elem_Type data=NULL);
elem_Type Insert(elem_Type data);
void Show(int level=1)
{
Travel(Head,level);
}
int ReplaceHead(elem_Type data)
{
elem_Type temp=Head->data;
Head->data=data;
return temp;
}
~Tree();
private:
void Destroy(Node<elem_Type> *);
void Travel(Node<elem_Type> *cur,int level);
Node<elem_Type> *Head;
};
template<typename elem_Type>
Tree<elem_Type>::Tree(elem_Type data)
{
Head=new Node<elem_Type>(data);
}
template<typename elem_Type>
elem_Type Tree<elem_Type>::Insert(elem_Type data)
{
Node<elem_Type> *cur,*pre,*temp;
cur=Head;
pre=cur;
while(cur)
{
if(data < cur->data)
{
pre=cur;
cur=cur->left;
}
else if(data > cur->data)
{
pre=cur;
cur=cur->right;
}
else
{
return data;
}
}
temp=new Node(data);
if(data < pre->data)
{
pre->left=temp;
}
if(data >pre->data)
{
pre->right=temp;
}
//cout<<"temp->data\t"<<temp->data<<endl;
return data;
}
template<typename elem_Type>
void Tree<elem_Type>::Travel(Node<elem_Type> *cur,int level)
{
int i;
if(cur==NULL) return ;
for(i=0;i<level-1;i++)
cout<<"\t";
cout<<"|__\t";
cout<<cur->data<<endl;
Travel(cur->left,level+1);
Travel(cur->right,level+1);
}
template<typename elem_Type>
void Tree<elem_Type>::Destroy(Node<elem_Type> *cur)
{
if(cur==NULL) return ;
//
Node<elem_Type> *Left=cur->left,*Right=cur->right;
delete cur;
Destroy(Left);
Destroy(Right);
}
template<typename elem_Type>
Tree<elem_Type>::~Tree()
{
Destroy(Head);
}
int main()
{
Tree<int> Avl_tree;
int node;
//cin>>node;
//Avl_tree.ReplaceHead(node);
while(cin>>node)
{
Avl_tree.Insert(node);
}
Avl_tree.Show();
return 0;
}