前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二叉树前中后遍历

二叉树前中后遍历

作者头像
川川菜鸟
发布2021-10-18 16:39:01
2000
发布2021-10-18 16:39:01
举报
代码语言:javascript
复制
#include 
#include 
typedef char ElemType;//二叉树数组类型为字符

//二叉树定义
typedef struct node
{
	ElemType data;//节点信息
	struct node* lchild, * rchild;//左右儿子,增加,*parent双亲指针就是三叉链
}Bnode,*BTree;
//初始化二叉链
void InitBTree(BTree& BT)
{
	BT = NULL;
}
//创建二叉链
void CreateBTree(BTree &BT)//分别指向左右
{
	char data;
	data = getchar();
	if (data == '#')	BT = NULL;
	else
	{
		BT = (BTree)malloc(sizeof(Bnode));//分配空间
		BT->data = data;
		CreateBTree(BT->lchild);//分别创建左右节点
		CreateBTree(BT->rchild);
	}
}
//void visit(BTree p)
//{
//	printf_s("%c", p->data);//访问根节点
//}
//先序(根)遍历
void preorder(BTree p)
{
	if (p != NULL)
	{
		//visit(p);
		printf_s("%c", p->data);//访问根节点
		preorder(p->lchild);//遍历左
		preorder(p->rchild);//遍历右
	}
}
//中序(根)遍历
void inorder(BTree p)
{
	if (p != NULL);
	{
		inorder(p->lchild);//中根顺序遍历左子树
		//visit(p);//访问根节点
		printf_s("%c", p->data);//访问根节点
		inorder(p->rchild);
	}
}
//后根遍历
void postorder(BTree p)
{
	if (p != NULL)
	{
		postorder(p->lchild);//按后根遍历左子树
		postorder(p->rchild);
		//visit(p);
		printf_s("%c", p->data);//访问根节点
	}
}
int main()
{
	BTree bt;
	//printf_s("二叉树初始化中....");
	InitBTree(bt);//初始化树
	printf_s("请输入给定的先根序列:\n");
	CreateBTree(bt);//创建树
	printf_s("给定的二叉树先跟序列为:\n");
	preorder(bt);//先跟遍历
	printf_s("二叉树中序序列结果为:\n");
	inorder(bt);//中根遍历
	printf_s("二叉树后序序列为:\n");
	postorder(bt);//后根遍历
	return 0;
}

有问题留言

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档