数据结构二叉树源程序
来源:互联网 发布:新顶级域名不备案吗 编辑:程序博客网 时间:2024/05/29 01:53
#define StACK_INIt_SIZE 100
#define StACKNCREMENt 50
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef char telemtype;
typedef char status;
typedef struct bitnode
{
telemtype data;
struct bitnode *lchild,*rchild;
}binode,*bitree;
int n;
status createbitree(bitree &t)
{
char ch;
scanf("%c",&ch);
if(ch==' ') t=NULL;
else
{
if(!(t=(bitnode*)malloc(sizeof(bitnode)))) exit(0);
t->data=ch;
createbitree(t->lchild);
createbitree(t->rchild);
}
return 0;
}
void preordertraverse(bitree t)
{
if(t)
{
printf("%c",t->data);
preordertraverse(t->lchild);
preordertraverse(t->rchild);
}
}
void inordertraverse(bitree t)
{
if(t)
{
inordertraverse(t->lchild);
printf("%c",t->data);
inordertraverse(t->rchild);
}
}
void postordertraverse(bitree t)
{
if(t)
{
postordertraverse(t->lchild);
postordertraverse(t->rchild);
printf("%c",t->data);
}
}
void leaf(bitree t)
{
if(t)
{
if(t->lchild==NULL&&t->rchild==NULL)
n=n+1;
leaf(t->lchild);
leaf(t->rchild);
}
}
int depth(bitree t)
{
int dep1,dep2;
if(t==NULL)
return 0;
else
{
dep1=depth(t->lchild);
dep2=depth(t->rchild);
if(dep1>=dep2)
return (dep1+1);
else
return (dep2+1);
}
}
int main()
{
int j,M;
bitree t;
printf("请输入:\n");
createbitree(t) ;
printf("先序遍历的结果是:");
preordertraverse(t);
printf("\n");
printf("中序遍历的结果是:");
inordertraverse(t);
printf("\n");
printf("后序遍历的结果是:");
postordertraverse(t);
printf("\n");
leaf(t);
printf("叶子节点数是:");printf("%d\n",n);
M=depth(t);
printf("二叉树的深度是:");printf("%d\n",M);
return 0;
printf("\n");
}
#define StACKNCREMENt 50
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef char telemtype;
typedef char status;
typedef struct bitnode
{
telemtype data;
struct bitnode *lchild,*rchild;
}binode,*bitree;
int n;
status createbitree(bitree &t)
{
char ch;
scanf("%c",&ch);
if(ch==' ') t=NULL;
else
{
if(!(t=(bitnode*)malloc(sizeof(bitnode)))) exit(0);
t->data=ch;
createbitree(t->lchild);
createbitree(t->rchild);
}
return 0;
}
void preordertraverse(bitree t)
{
if(t)
{
printf("%c",t->data);
preordertraverse(t->lchild);
preordertraverse(t->rchild);
}
}
void inordertraverse(bitree t)
{
if(t)
{
inordertraverse(t->lchild);
printf("%c",t->data);
inordertraverse(t->rchild);
}
}
void postordertraverse(bitree t)
{
if(t)
{
postordertraverse(t->lchild);
postordertraverse(t->rchild);
printf("%c",t->data);
}
}
void leaf(bitree t)
{
if(t)
{
if(t->lchild==NULL&&t->rchild==NULL)
n=n+1;
leaf(t->lchild);
leaf(t->rchild);
}
}
int depth(bitree t)
{
int dep1,dep2;
if(t==NULL)
return 0;
else
{
dep1=depth(t->lchild);
dep2=depth(t->rchild);
if(dep1>=dep2)
return (dep1+1);
else
return (dep2+1);
}
}
int main()
{
int j,M;
bitree t;
printf("请输入:\n");
createbitree(t) ;
printf("先序遍历的结果是:");
preordertraverse(t);
printf("\n");
printf("中序遍历的结果是:");
inordertraverse(t);
printf("\n");
printf("后序遍历的结果是:");
postordertraverse(t);
printf("\n");
leaf(t);
printf("叶子节点数是:");printf("%d\n",n);
M=depth(t);
printf("二叉树的深度是:");printf("%d\n",M);
return 0;
printf("\n");
}
0 0
- 数据结构二叉树源程序
- 一个创建二叉树的源程序C++
- 哈夫曼编码(数据结构)源程序
- 数据结构迷宫源程序
- 数据结构赫夫曼树源程序
- 数据结构-树-二叉树
- 数据结构::树,二叉树
- 数据结构-二叉树
- 二叉树的数据结构
- 数据结构-二叉树算法
- java数据结构:二叉树
- 数据结构---二叉树
- 数据结构(C++)--二叉树
- JAVA 数据结构 二叉树
- 数据结构-二叉树 问题
- 转贴:数据结构:二叉树
- 二叉树(数据结构 c++)
- 数据结构-二叉树操作
- 数据挖掘十大算法---EM 期望最大算法
- java中如何导入03和07版的Excel文件数据,存入到数据库
- NIT-三个师妹之点菜
- ios开发中,关于javascript直接调用oc代码而非通过改变url回调方式
- 错误列表集锦
- 数据结构二叉树源程序
- 从程序员的角度谈创业三年的亲身体会
- sphinx windows安装25个常见问题+win7系统中要注意的事项
- 数据结构赫夫曼树源程序
- Android studio 下载安装
- 按键精灵微信群内加好友
- 使用qmeu-img创建虚拟机(创建虚拟机,虚拟机快照)
- Dalvik 虚拟机指令
- ofstream打开中文路径失败解决方法