您当前的位置: 首页 > 

川川菜鸟

暂无认证

  • 2浏览

    0关注

    969博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

二叉树前中后遍历

川川菜鸟 发布时间:2021-07-07 18:56:02 ,浏览量:2


#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;
}

有问题留言

关注
打赏
1665165634
查看更多评论
立即登录/注册

微信扫码登录

0.0502s