1、#include stdlib.htypedef 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);/
2、*Function: main()Description: 主调函数Calls: createTree() showTree() preOrder() postOrder() inOrder() leafNum() levelOrder() nodeNum() treeDepth()Input: NULLReturn: voidOthers:*/void main() BT *t = NULL; int choice, k = 1; while (k) printf(n 二叉树子系统n);*n* 1-建二叉树 *n* 2-凹入显示 *n* 3-先序遍历 *n* 4-中序遍历 *n* 5-后序遍
3、历 *n* 6-层次遍历 *n* 7-求叶子数 *n* 8-求结点数 *n* 9-求树深度 *n* 0-返 回 *n请选择菜单号(0-9): fflush(stdin); scanf(%d, &choice); switch(choice) case 1:请输入根结点(0表示该结点为空): t = createTree();二叉树建立成功。n break; case 2: showTree(t); case 3:先序遍历序列: if (t = NULL)空。 else preOrder(t); case 4:中序遍历序列: inOrder(t); case 5:后序遍历序列: postOrde
4、r(t); case 6:层次遍历序列: levelOrder(t); case 7:该二叉树的叶子数:0。%d。, leafNum(t); case 8:该二叉树的结点数为:, nodeNum(t); case 9:该二叉树的深度为:, treeDepth(t); case 0: k = 0; default: k = 1; 建立二叉树 BT *BT *createTree() /建立二叉树 BT *t; char x; getchar();%cx); /获取输入的结点值 if (x = ) /输入的值为零,结点为空 t = NULL; t = (BT *)malloc(sizeof(BT)
5、; t-data = x; /赋值请输入结点%c的左孩子:, t-data);lchild = createTree(); /递归建立左孩子请输入结点%c的右孩子:rchild = createTree(); /递归调用 return t; 凹入显示二叉树 t:结点指针void showTree(BT *t) /显示二叉树 BT *sta100, *p; int lev1002; /第一个空存要空的长度,第二空存左右孩子的标示 int tp, n, i, wid = 4; if (t != NULL) /结点非空凹入表示法: tp = 1; statp = t; /将各个结点的指针放在指针数组
6、中 levtp0 = wid; /显示的前面的空白长度 while (tp 0) p = statp; n = levtp0; /显示 for (i = 0; i for (i = n+1; i lchild != NULL) tp+; statp = p-lchild; levtp0 = n+wid; levtp1 = 1;rchild !rchild; levtp1 = 2; 先序遍历void preOrder(BT *t) /先序遍历 if (t) /结点不为空%3c preOrder(t-lchild);rchild); 后序遍历void postOrder(BT *t) /后序遍历 postOrder(t- 中序遍历 inOrd
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1