数据结构二叉树源程序

来源:互联网 发布:新顶级域名不备案吗 编辑:程序博客网 时间: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");
}
0 0
原创粉丝点击