数据结构:二叉树子系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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:

牰湩晴尨该二叉树的深度为:);

相关文档
最新文档