数据结构:二叉树子系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
/*
*题目:按屏幕提示用前序方法建立一棵二叉树,并能按凹入法显示二叉树结构。* 编写前序遍历、中序遍历、后序遍历、层次遍历程序。
* 编写求二叉树的叶结点数、总结点数和深度的程序。
* 设计一个选择式菜单,以菜单方式选择下列操作。
* 二叉树子系统
* *******************************
* * 1------建二叉树*
* * 2------凹入显示*
* * 3------先序遍历*
* * 4------中序遍历*
* * 5------后序遍历*
* * 6------层次遍历*
* * 7------求叶子数*
* * 8------求结点数*
* * 9------求树深度*
* * 0------返回*
* *******************************
* 请选择菜单号(0--9)
*/
#include
#include
typedef struct bTree //二叉树结点
{
char data; //值域
struct bTree *lchild; //左孩子
struct bTree *rchild; //右孩子
}BT;
BT *createTree();
void showTree(BT *t);
void preOrder(BT *t);
void postOrder(BT *t);
void inOrder(BT *t);
void levelOrder(BT *t);
int leafNum(BT *t);
int nodeNum(BT *t);
int treeDepth(BT *t);
/************************************************* Function: main()
Description: 主调函数
'.
.
Calls: createTree()
showTree()
preOrder()
postOrder()
inOrder()
leafNum()
levelOrder()
nodeNum()
treeDepth()
Input: NULL
Return: void
Others: NULL
*************************************************/ void main()
{
BT *t = NULL;
int choice, k = 1;
while (k)
{
printf(\
二叉树子系统\n);
printf(*******************************\n);
printf(* 1------建二叉树*\n);
printf(* 2------凹入显示*\n);
printf(* 3------先序遍历*\n);
printf(* 4------中序遍历*\n);
printf(* 5------后序遍历*\n);
printf(* 6------层次遍历*\n);
printf(* 7------求叶子数*\n);
printf(* 8------求结点数*\n);
printf(* 9------求树深度*\n);
printf(* 0------返回*\n);
printf(*******************************\n);
牰湩晴尨请选择菜单号(0--9):);
fflush(stdin);
scanf(%d, &choice);
switch(choice)
{
case 1:
牰湩晴尨请输入根结点('0'表示该结点为空):);
t = createTree();
牰湩晴尨二叉树建立成功。\n);
break;
'.
.
case 2:
showTree(t);
break;
case 3:
牰湩晴尨先序遍历序列:);
if (t == NULL)
{
牰湩晴尨空。\n);
}
else
{
preOrder(t);
}
break;
case 4:
牰湩晴尨中序遍历序列:);
if (t == NULL)
{
牰湩晴尨空。\n);
}
else
{
inOrder(t);
}
break;
case 5:
牰湩晴尨后序遍历序列:);
if (t == NULL)
{
牰湩晴尨空。\n);
}
else
{
postOrder(t);
}
break;
case 6:
牰湩晴尨层次遍历序列:);
if (t == NULL)
{
牰湩晴尨空。\n);
}
else
{
'.
.
levelOrder(t);
}
break;
case 7:
牰湩晴尨该二叉树的叶子数:);
if (t == NULL)
{
printf(。\n);
}
else
{
printf(%d。\n, leafNum(t));
}
break;
case 8:
牰湩晴尨该二叉树的结点数为:);
if (t == NULL)
{
printf(。\n);
}
else
{
printf(%d。\n, nodeNum(t));
}
break;
case 9:
牰湩晴尨该二叉树的深度为:);