二叉树前中后遍历
【摘要】
#include <stdio.h>
#include <malloc.h>
typedef char ElemType;//二叉树数组类型为字符
//二叉树定义
typede...
#include <stdio.h>
#include <malloc.h>
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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
有问题留言
文章来源: chuanchuan.blog.csdn.net,作者:川川菜鸟,版权归原作者所有,如需转载,请联系作者。
原文链接:chuanchuan.blog.csdn.net/article/details/118554807
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)