#include <iostream>
using namespace std;
struct BiTNode
{
char data;
struct BiTNode *lchild, *rchild;
};
class BinaryTree
{
public:
BinaryTree();
void CreateBiTree();
void PreOrderTraverse();
void Inorder();
void Posorder();
void PreOrderCount();
void PreOrderCount(BiTNode* &T) ;
void CreateBiTree(BiTNode* &T);
void PreOrderTraverse(BiTNode* &T) ;
void Inorder(BiTNode* &T) ;
void Posorder(BiTNode* &T);
int GetCount();
private:
BiTNode*T;
int count;
};
BinaryTree::BinaryTree()
{
count=0;
}
void BinaryTree::CreateBiTree(BiTNode* &T)
{
char ch;
cin>>ch;
if(ch=='.')//if((ch=getchar())=='#')
T=NULL;
else
{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void BinaryTree::PreOrderTraverse(BiTNode* &T)
{
if(T)
{
cout<<T->data;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void BinaryTree::Inorder(BiTNode* &T)
{
if(T)
{
Inorder(T->lchild);
cout<<T->data;
Inorder(T->rchild);
}
}
void BinaryTree::Posorder(BiTNode* &T)
{
if(T)
{
Posorder(T->lchild);
Posorder(T->rchild);
cout<<T->data;
}
}
void BinaryTree::PreOrderCount(BiTNode* &T)
{
if(T)
{
count++;
PreOrderCount(T->lchild);
PreOrderCount(T->rchild);
}
}
void BinaryTree::CreateBiTree()
{
CreateBiTree(T);
}
void BinaryTree::Inorder()
{
Inorder(T);
}
void BinaryTree::PreOrderTraverse()
{
PreOrderTraverse(T);
}
void BinaryTree::PreOrderCount()
{
PreOrderCount(T);
}
int BinaryTree::GetCount()
{
return count;
}
void BinaryTree::Posorder()
{
Posorder(T);
}
int main()
{
BinaryTree bn;
cout<<"创建一颗树,输入字符代表树的数据,用“.”表示空树:"<<endl;
bn.CreateBiTree();
cout<<"Preorder traversal:"<<endl;
bn.PreOrderTraverse();
cout<<endl;
cout<<"Inorder traversal:"<<endl;
bn.Inorder();
cout<<endl;
cout<<"Postorder traversal:"<<endl;
bn.Posorder();
cout<<endl;
cout<<"The number of nodes is:"<<endl;
bn.PreOrderCount();
cout<<bn.GetCount()<<endl;
return 0;
}Simple implementation of the BinaryTree preorder traversal, inorder traversal, post traversal
最新推荐文章于 2018-05-11 19:27:27 发布

5903

被折叠的 条评论
为什么被折叠?



