|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *lchild,*rchild;
} BTroot;
int sum=0,m=sizeof(BTroot);
BTroot *root;
void CR_bt(int x) //构建而擦排序书
{ BTroot *s,*p,*q;
s=(BTroot *)malloc(m);
s->data=x;
s->rchild=NULL;s->rchild=NULL;
if(!root) {root=s;return;}
p=root;
while(p!=NULL){ q=p;
if(p->data==x) {printf("the number is hava\n");return ;}
else if(p->data>x) p=p->lchild;
else p=p->rchild;
}
if(x>q->data)q->rchild=s;
else q->lchild=s;
}
void Nchild_count(BTroot *root)
{ if(root!=NULL){
if((root->lchild==NULL)&&(root->rchild==NULL)){
sum++; printf("这个叶子结点的值为%d",root->data);}
Nchild_count(root->lchild);
Nchild_count(root->rchild);}
}
int depth( BTroot *root)
{ int d,p;
p=0;
if(root==NULL) return p;
else {d=depth(root->lchild);
if(d>p)p=d;
d=depth(root->rchild);
if(d>p)p=d;
}
p=p+1;
return p;
}
main()
{ int x,p;
root=NULL;
do { printf("输入要建立二叉树结点值\n");
scanf("%d",&x);
CR_bt(x);
}
while(x!=99);
Nchild_count(root);
printf("叶子结点的总数为=%d",sum);
p=depth(root);
printf("树的深度为=%d",p);
}
|
|