二叉树的简单输入输出

3 篇文章 0 订阅
2 篇文章 0 订阅


话不多说,码来

二叉树存储的方式

typedef struct Node
{
	char data;//存储数据
	struct Node *LChild;//左儿子
	struct Node *RChild;//右儿子
}BNode,*BTree;

在这里插入图片描述
以下的存储和遍历我们依照该图来说明

先序创建(难点)

这里的创建主要需要理解指针的传递,理解了就可以自己敲出来了

void CreatBTree(BTree * bt)//创建二叉树 
{
	char ch;
	ch=getchar();
	if(ch=='.')
	{
		*bt=NULL;
	}
	else 
	{
		*bt=(BTree )malloc(sizeof(BNode));
		(*bt)->data=ch;
		CreatBTree(&((*bt)->LChild));
		CreatBTree(&((*bt)->RChild));	
	}

}
//依次输入: AB.D..CE.F...来先序创建二叉树

遍历

二叉树的遍历 其实先序,中序,后序遍历都是差不多的,理解了先序遍历,后序和中序也就理解了

先序遍历

void PreOrder(BTree root)//先序遍历 
{
	if(root)
	{
	//先序遍历先输出根节点,再输出左子树,再输出右子树
		printf("%c ",root->data);
		PreOrder(root->LChild);
		PreOrder(root->RChild);
	}
}

//输出:A B D C E F

中序遍历

void InOrder(BTree root)//中序遍历 
{
	if(root)
	{
	//中序序遍历先输出输出左子树,再输出根节点,最后再输出右子树
		InOrder(root->LChild);
		printf("%c ",root->data);
		InOrder(root->RChild);
	}
} 
//输出:B D A E F C

后序遍历

void PostOrder(BTree root)//后序序遍历 
{
	if(root)
	{
	//中序序遍历先输出输出右子树,再输出根节点,最后再输出左子树
		PostOrder(root->LChild);
		PostOrder(root->RChild);
		printf("%c ",root->data);
	} 
} 
//输出:D B F E C A

验证

int main()
{
	BTree bt;
	CreatBTree(&bt);
	
	PreOrder(bt);
	printf("\n");
	InOrder(bt);
	printf("\n");
	PostOrder(bt);
	printf("\n");
	return 0;
} 

以下四行数据分别是先序输入创建二叉树,先序输出,中序输出,后续输出:
在这里插入图片描述

由于水平有限,本博客难免有不足,恳请各位不吝赐教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值