二叉樹建立,前序遍歷,中序遍歷,後序遍歷 思路

PengPengBlog發表於2017-02-18
#include<stdio.h>
#include<stdlib.h>
typedef char ElemType;

typedef struct BiTNode
{
	char data;
	struct BitNode *lchild, *rchild;
}BiTnode,*BiTree;

//建立一顆二叉樹,約定使用者用前序遍歷的方式輸入資料
CreateBiTree(BiTree *T)
{
	char c;

	scanf("%c",c);
	if(' ' ==c)
	{
		*T = NULL;
	}
	else
	{
		*T =(BitNode *)malloc(sizeof(BiTNode));
		(*T)->data = c;
		CreateBiTree(&(*T)->lchild);
		CreateBiTree(&(*T)->rchild);
	}

}

//訪問二叉樹結點的具體操作,逆向幹嘛!
visit(char c, in level)
{
	printf("%c 位於第%d層\n", c, level);
}
//遍歷二叉樹,前序遍歷
PreOrderTraverse(BiTree T,int level)
{
	if(T)
	{
		visit(T->data,level);
		PreOrderTraverse(T->lchild,level+1);
		PreOrderTraverse(T->rchild,level+1);
	}

	
}

//中序遍歷
PreOrderTraverse(BiTree T,int level)
{
	if(T)
	{
		
		PreOrderTraverse(T->lchild,level+1);
		visit(T->data,level);
		PreOrderTraverse(T->rchild,level+1);
	}

	
}
//後序遍歷
PreOrderTraverse(BiTree T,int level)
{
	if(T)
	{
		
		PreOrderTraverse(T->lchild,level+1);
		
		PreOrderTraverse(T->rchild,level+1);

		visit(T->data,level);
	}

	
}

int main()
{
	int level = 1;
	BiTree T = NULL;

	CreatBiTree(&T);
	PreOrderTraverse(T,level);
	
	return 0;
}

相關文章