#include<stdio.h>
#define TREEMAX 100
typedef struct BT
{
char data;
BT *lchild;
BT *rchild;
}BT;
BT *CreateTree();
void Preorder(BT *T);
void Postorder(BT *T);
void Inorder(BT *T);
void Leafnum(BT *T);
void Nodenum(BT *T);
int TreeDepth(BT *T);
int count=0;
void main()
{
BT *T=NULL;
char ch1,ch2,a;
ch1='y';
while(ch1=='y'||ch1=='y')
{
printf("\n");
printf("\n\t\t 二叉树子系统");
printf("\n\t\t*****************************************");
printf("\n\t\t 1---------建二叉树 ");
printf("\n\t\t 2---------先序遍历 ");
printf("\n\t\t 3---------中序遍历 ");
printf("\n\t\t 4---------后序遍历 ");
printf("\n\t\t 5---------求叶子数 ");
printf("\n\t\t 6---------求结点数 ");
printf("\n\t\t 7---------求树深度 ");
printf("\n\t\t 0---------返 回 ");
printf("\n\t\t*****************************************");
printf("\n\t\t 请选择菜单号 (0--7)");
scanf("%c",&ch2);
getchar();
printf("\n");
switch(ch2)
{
case'1':
printf("\n\t\t请按先序序列输入二叉树的结点:\n");
printf("\n\t\t说明:输入结点(‘0’代表后继结点为空)后按回车。\n");
printf("\n\t\t请输入根结点:");
T=CreateTree();
printf("\n\t\t二叉树成功建立!\n");break;
case'2':
printf("\n\t\t该二叉树的先序遍历序列为:");
Preorder(T);break;
case'3':
printf("\n\t\t该二叉树的中序遍历序列为:");
Inorder(T);break;
case'4':
printf("\n\t\t该二叉树的后序遍历序列为:");
Postorder(T);break;
case'5':
count=0;Leafnum(T);
printf("\n\t\t该二叉树有%d个叶子。\n",count);break;
case'6':
count=0;Nodenum(T);
printf("\n\t\t该二叉树总共有%d个结点。\n",count);break;
case'7':
printf("\n\t\t该树的深度为:%d",TreeDepth(T));
break;
case'0':
ch1='n';break;
default:
printf("\n\t\t***请注意:输入有误!***");
}
if(ch2!='0')
{
printf("\n\n\t\t按【Enter】键继续,按任意键返回主菜单!\n");
a=getchar();
if(a!='\xA')
{
getchar();
ch1='n';
}
}
}
}
BT *CreateTree()
{
BT *t;
char x;
scanf("%c",&x);
getchar();
if(x=='0')
t=NULL;
else
{
t=new BT;
t->data=x;
printf("\n\t\t请输入%c结点的左子结点:",t->data);
t->lchild=CreateTree();
printf("\n\t\t请输入%c结点的右子结点:",t->data);
t->rchild=CreateTree();
}
return t;
}
void Preorder(BT *T)
{
if(T)
{
printf("%3c",T->data);
Preorder(T->lchild);
Preorder(T->rchild);
}
}
void Inorder(BT *T)
{
if(T)
{
Inorder(T->lchild);
printf("%3c",T->data);
Inorder(T->rchild);
}
}
void Postorder(BT *T)
{
if(T)
{
Postorder(T->lchild);
Postorder(T->rchild);
printf("%3c",T->data);
}
}
void Leafnum(BT *T)
{
if(T)
{
if(T->lchild==NULL&&T->rchild==NULL)
count++;
Leafnum(T->lchild);
Leafnum(T->rchild);
}
}
void Nodenum(BT *T)
{
if(T)
{
count++;
Nodenum(T->lchild);
Nodenum(T->rchild);
}
}
int TreeDepth(BT *T)
{
int ldep,rdep;
if(T==NULL)
return 0;
else
{
ldep=TreeDepth(T->lchild);
rdep=TreeDepth(T->rchild);
if(ldep>rdep)
return ldep+1;
else
return rdep+1;
}
}
资源简介:#include<stdio.h> #define TREEMAX 100 typedef struct BT { char data; BT *lchild; BT *rchild; }BT; BT *CreateTree(); void Preorder(BT *T); void Postorder(BT *T); void Inorder(BT *T); void Leafnum(BT *T); void Nodenum(BT *T); int TreeDep...
上传时间: 2020-06-11
上传用户:ccccy
资源简介: 为了实现时序电路状态验证和故障检测,需要事先设计一个输入测试序列。基于二叉树节点和树枝的特性,建立时序电路状态二叉树,按照电路二叉树节点(状态)与树枝(输入)的层次逻辑关系,可以直观和便捷地设计出时序电路测试序列。用测试序列激励待测电路,可...
上传时间: 2013-10-19
上传用户:qitiand
资源简介:数据结构二叉树实现。
上传时间: 2013-11-04
上传用户:zhangxin
资源简介:无递归二叉树插入及中序等顺带求得深度等
上传时间: 2015-01-06
上传用户:CSUSheep
资源简介:这是一个二叉树的遍历问题
上传时间: 2013-12-03
上传用户:王者A
资源简介:二叉树集合运算毕业论文
上传时间: 2013-12-22
上传用户:xiaodu1124
资源简介:二叉树
上传时间: 2015-01-09
上传用户:cursor
资源简介:数据结构中的平衡二叉树的代码
上传时间: 2015-01-11
上传用户:天诚24
资源简介:有二叉树计算表达式的值
上传时间: 2014-01-18
上传用户:D&L37
资源简介:本代码演示了平衡排序二叉树的实现,并用到了智能指针等技术
上传时间: 2015-01-13
上传用户:2404
资源简介:一个简单二叉树类(非本人原创)
上传时间: 2013-12-27
上传用户:chenxichenyue
资源简介:顺序二叉树和树的复制及哈夫曼编码
上传时间: 2014-12-06
上传用户:bakdesec
资源简介:数据结构二叉树的实现
上传时间: 2015-01-18
上传用户:宋桃子
资源简介:C++二叉树算法
上传时间: 2015-01-20
上传用户:ANRAN
资源简介:二叉树的算法,先序建立,中序遍历
上传时间: 2013-12-25
上传用户:AbuGe
资源简介:二叉树的集合操作,附带一份程序的试验报告,相当优秀的程序,对深入理解二叉树很有帮助。
上传时间: 2014-01-20
上传用户:qoovoop
资源简介:建立一个排序二叉树
上传时间: 2015-01-26
上传用户:zycidjl
资源简介:二叉树算法(java)
上传时间: 2014-01-03
上传用户:dapangxie
资源简介:二叉树遍历的方法
上传时间: 2013-12-25
上传用户:1079836864
资源简介:创建二叉树的 Java程序
上传时间: 2015-01-30
上传用户:坏坏的华仔
资源简介:表达式二叉树的实现。输入任意一个前序中序或后序表达式,可生成对应的表达式二叉树并树状打印,之后用户可以选择以前序中序或后序将表达式再次输出。
上传时间: 2015-01-30
上传用户:it男一枚
资源简介:二叉树遍历的算法程序
上传时间: 2014-08-26
上传用户:Altman
资源简介:非递归前序,中序,后序遍历二叉树(优化算法)
上传时间: 2014-08-01
上传用户:宋桃子
资源简介:简单的二叉树实现
上传时间: 2014-01-10
上传用户:wangchong
资源简介:简单二叉树的连表算法
上传时间: 2015-02-03
上传用户:aa17807091
资源简介:二叉树的生成与遍历
上传时间: 2015-02-03
上传用户:AbuGe
资源简介:根据前序序列和中序序列生成二叉树并进行遍历。
上传时间: 2013-12-12
上传用户:CHINA526
资源简介:二叉树的各种操作,实现插入,查找,删除等功能
上传时间: 2015-02-07
上传用户:playboys0
资源简介:数据结构中二叉树用c实现的算法
上传时间: 2014-01-09
上传用户:playboys0
资源简介:二叉树的前序遍历
上传时间: 2015-02-08
上传用户:BOBOniu