好了,测试通过,请采纳
#include
using namespace std;
typedef char TElemType;
const char space='^';
const int MAX_NODE_COUNT=20;
typedef struct BTreeNode
{
TElemType data;
struct BTreeNode *left ,*right;
}*Root;
class BTree
{
public:
Root rt;
public:
BTree (){rt=NULL;}
void CreateBTree();
void DLRTraverse();
void LDRTraverse();
void LRDTraverse();
int depth(Root);
};
void BTree::CreateBTree()
{
char value;
cin>>value;
if (value==space)
return;
rt=new BTreeNode;
rt->data=value;
BTree left,right;
left.CreateBTree();
right.CreateBTree();
rt->left=left.rt;
rt->right=right.rt;
}
void BTree::DLRTraverse()
{
if (rt)
{
BTree left,right;
left.rt=rt->left;
right.rt=rt->right;
cout<data;
left.DLRTraverse();
right.DLRTraverse();
}
}
void BTree::LDRTraverse()
{
if (rt)
{
BTree left,right;
left.rt=rt->left;
right.rt=rt->right;
left.LDRTraverse();
cout<data;
right.LDRTraverse();
}
}
void BTree::LRDTraverse()
{
if (rt)
{
BTree left,right;
left.rt=rt->left;
right.rt=rt->right;
left.LRDTraverse();
right.LRDTraverse();
cout<data;
}
}
int BTree::depth(Root rt)
{
int dep1,dep2;
if(rt==NULL) return 0;
else
{
dep1=depth(rt->left );
dep2=depth(rt->right );
return (dep1>dep2?(dep1+1):(dep2+1));
}
}
void main()
{
BTree T;
T.CreateBTree();
T.DLRTraverse();cout<T.LDRTraverse();cout< T.LRDTraverse();cout< cout< }