二叉树递归遍历

/*二叉树递归遍历*/
#include<stdio.h>
#include<malloc.h>
typedef char ElemType;
typedef struct BitNode
{
	ElemType data;
	struct BitNode * lchild,*rchild;
}BitNode,*BitTree;
void InitTree(BitTree &T)
{
	T=(BitNode *)malloc(sizeof(BitNode));
	T=NULL;
}
void InsertTree1(BitNode *&T,ElemType value)
{	

}
void InsertTree2(BitNode *&T,ElemType value)	//二叉排序树插入
{
	BitNode *Q;
	if(T==NULL)
	{
		Q=(BitNode *)malloc(sizeof(BitNode));
		Q->data=value;
		Q->lchild=NULL;
		Q->rchild=NULL;
		T=Q;
		return ;
	}
	if(T->data > value)
		InsertTree2(T->lchild,value);
	if(T->data < value)
		InsertTree2(T->rchild,value);
}
void visit(BitNode *p)
{
	printf("%c\t",p->data);
}
void PreOrder(BitTree T)	//1.先序遍历
{
	if(T!=NULL)
	{
		visit(T);
		PreOrder(T->lchild);
		PreOrder(T->rchild);
	}
}
void InOrder(BitTree T)		//2.中序遍历
{
	if(T!=NULL)
	{
		InOrder(T->lchild);
		visit(T);
		InOrder(T->rchild);
	}
}
void PostOrder(BitTree T)	//3.后序遍历
{
	if(T!=NULL)
	{
		PostOrder(T->lchild);
		PostOrder(T->rchild);
		visit(T);
	}
}
void DeepTree(BitTree T)	//4.求树的深度
{

}
void main()
{
	BitNode *T;
	InitTree(T);
	InsertTree2(T,'6');
	InsertTree2(T,'3');
	InsertTree2(T,'2');
	InsertTree2(T,'4');
	InsertTree2(T,'5');
	InsertTree2(T,'7');
	InsertTree2(T,'8');
	InsertTree2(T,'1');
	PreOrder(T);
	printf("\n");
	InOrder(T);
	printf("\n");
	PostOrder(T);
	printf("\n");
}

  

posted @ 2020-07-16 21:29  石乐智先生  阅读(164)  评论(0编辑  收藏  举报