Simple implementation of the BinaryTree preorder traversal, inorder traversal, post traversal

来源:互联网 发布:怎么在mac上把win删 编辑:程序博客网 时间:2024/06/06 23:59
#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;}


 
阅读全文
0 0