大学程序实验.数据结构.树型结构及其应用一.递归遍历
- 0 目录
- 4 树型结构及其应用
- 4.1 递归遍历
- 4.1.1 题目
- 4.1.2 源码
- 1.1.3 下载
- 2 下一章
0 目录
4 树型结构及其应用
4.1 递归遍历
4.1.1 题目
以二叉链表为存储结构,实现二叉树的创建、先序、中序、后序递归遍历算法。
4.1.2 源码
// 递归遍历.cpp : Defines the entry point for the console application.
//
typedef char TElemType;
typedef int Status;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void BiTreeMenu();
Status CreateBiTree(BiTree *T);
void PreOrderTraverse(BiTNode* T);
void MidOrderTraverse(BiTNode* T);
void LasOrderTraverse(BiTNode* T);
void BiTreeMenu()
{
printf("========三种递归遍历算法========\n");
printf("二叉树创建\n");
printf("请输入二叉树各节点数:\n");
}
Status CreateBiTree(BiTree *T)
{
TElemType ch;
TElemType temp;
scanf("%c",&ch);
temp=getchar();
if(ch == '#')
{
*T = NULL;
}
else
{
*T=(BiTree)malloc(sizeof(BiTNode) );
if(!(*T))
{
return ERROR;
}
else
{
(*T)->data=ch;
printf("请输入%c的左节点的值:",ch);
CreateBiTree(&(*T)->lchild);
printf("请输入%c的右节点的值:",ch);
CreateBiTree(&(*T)->rchild);
}
}
return OK;
}
void PreOrderTraverse(BiTNode* T)
{
if(!T)
{
return;
}
else
{
printf("%c ",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void MidOrderTraverse(BiTNode* T)
{
if(!T)
{
return;
}
else
{
MidOrderTraverse(T->lchild);
printf("%c ",T->data);
MidOrderTraverse(T->rchild);
}
}
void LasOrderTraverse(BiTNode* T)
{
if(!T)
{
return;
}
else
{
LasOrderTraverse(T->lchild);
LasOrderTraverse(T->rchild);
printf("%c ",T->data);
}
}
Status main()
{
BiTree pRoot;
BiTree *p=(BiTree*)malloc(sizeof(BiTree));
BiTreeMenu();
printf("请输入第一个节点的值,'#'代表没有叶节点:\n");
CreateBiTree(&pRoot);
printf("\n");
printf("先序遍历二叉树:\n");
PreOrderTraverse(pRoot);
printf("\n");
printf("中序遍历二叉树:\n");
MidOrderTraverse(pRoot);
printf("\n");
printf("后序遍历二叉树:\n");
LasOrderTraverse(pRoot);
printf("\n");
return OK;
}
1.1.3 下载
链接地址: 4.1_递归遍历.CPP