建立二叉树,并完成三种遍历算法

匿名 (未验证) 提交于 2019-12-03 00:15:02
#include<iostream> #include<stack> #define TElemType char using namespace std; typedef struct BiTNode { 	TElemType data; 	struct BiTNode *lchild,*rchild; 	 }BiTNode,*BiTree; //先序遍历的顺序建立二叉链表 void xCreateBiTree(BiTree &T) { 	char ch; 	cin>>ch; 	if(ch=='#') T=NULL; 	else 	{ 		T=new BiTNode; 		T->data=ch; 		xCreateBiTree(T->lchild); 		xCreateBiTree(T->rchild); 	} }  //先序遍历输出  void xPrintTree(BiTree T)  {  	if(T) 	{ 		cout<<T->data; 		xPrintTree(T->lchild); 		xPrintTree(T->rchild); 		 	} 	else 	{ 	 	 return;	  	} } //中序遍历的顺序建立二叉链表 void zCreateBiTree(BiTree &T) { 	char ch; 	cin>>ch; 	if(ch=='#') T=NULL; 	else 	{ 		T=new BiTNode; 		zCreateBiTree(T->lchild); 		T->data=ch; 		zCreateBiTree(T->rchild); 	} } //中序遍历输出  void zPrintTree(BiTree T)  {  	if(T) 	{ 		zPrintTree(T->lchild); 		cout<<T->data; 		zPrintTree(T->rchild); 	} 	else 	{ 	 	 return;	  	} } //后序遍历的顺序建立二叉链表 void hCreateBiTree(BiTree &T) { 	char ch; 	cin>>ch; 	if(ch=='#') T=NULL; 	else 	{ 		T=new BiTNode; 		hCreateBiTree(T->lchild); 		hCreateBiTree(T->rchild); 		T->data=ch; 	} } //后序遍历输出  void hPrintTree(BiTree T)  {  	if(T) 	{ 		hPrintTree(T->lchild); 		hPrintTree(T->rchild); 		cout<<T->data; 	} 	else 	{ 	 	 return;	  	} } int main() { 	BiTree root; //	xCreateBiTree(root); //	xPrintTree(root); 	/* 		输入:ABC##DE#G##F### 		输出:ABCDEGF 	*/ 	 //	zCreateBiTree(root); //	zPrintTree(root); 	/* 		输入:ABC##DE#G##F### 		输出:CBEGDFA 	*/ 	hCreateBiTree(root); 	hPrintTree(root); 	/* 		输入:ABC##DE#G##F### 		输出:CGEFDBA 	*/ 	 	return 0;  }  

  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!