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

#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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值