#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;
}
有问题留言
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有