#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
最新推荐文章于 2020-08-08 00:00:22 发布