二叉排序树的实现 分别用顺序和二叉链表作存储结构 1)以回车('\n')为输入结束标志,输入数列L,生成一棵二
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/26 07:52:09
二叉排序树的实现 分别用顺序和二叉链表作存储结构 1)以回车('\n')为输入结束标志,输入数列L,生成一棵二
二叉排序树的实现 分别用顺序和二叉链表作存储结构 1)以回车('\n')为输入结束标志,输入数列L,生成一棵二
二叉排序树的实现 分别用顺序和二叉链表作存储结构 1)以回车('\n')为输入结束标志,输入数列L,生成一棵二
#include"stdio.h"
#include"string.h"
#include
#define Max 20 //结点的最大个数
typedef struct node{
char data;
struct node *lchild,*rchild;
}BinTNode; //自定义二叉树的结点类型
typedef BinTNode *BinTree; //定义二叉树的指针
int NodeNum,leaf; //NodeNum为结点数,leaf为叶子数
//
void main()
{
BinTree root;
int i,depth;
printf("\n");
printf("Creat Bin_Tree; Input preorder:"); //输入完全二叉树的先序序列,
// 用#代表虚结点,如ABD###CE##F##
root=CreatBinTree(); //创建二叉树,返回根结点
do { //从菜单中选择遍历方式,输入序号.
printf("\t\n");
scanf("%d",&i); //输入菜单序号(0-5)
switch (i){
case 1: printf("Print Bin_tree Preorder: ");
Preorder(root); //先序遍历
break;
case 2: printf("Print Bin_Tree Inorder: ");
Inorder(root); //中序遍历
break;
case 3: printf("Print Bin_Tree Postorder: ");
Postorder(root); //后序遍历
break;
case 4: depth=TreeDepth(root); //求树的深度及叶子数
printf("BinTree Depth=%d BinTree Node number=%d",depth,NodeNum);
printf(" BinTree Leaf number=%d",leaf);
break;
case 5: printf("LevePrint Bin_Tree: ");
Levelorder(root); //按层次遍历
break;
default: exit(1);
}
printf("\n");
} while(i!=0);
}