二叉树深度及编译报警问题
#include <stdio.h>#include <stddef.h>
#define NULL ((void *)0)
typedef struct{
char e;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//建立二叉树
int creatT(BiTree *T){
int c;
scanf("%c",&c);
if(c==' '){
*T=NULL;
}else{
if(!((*T)=(BiTNode *)malloc(sizeof(BiTNode)))){
printf("ERROR");
return 0;
}
(*T)->e=c;
creatT(&((*T)->lchild));
creatT(&((*T)->rchild));
}
return 1;
}
//打印二叉树
void printfT(BiTree *T){
if(*T==NULL){
printf(" ");
}else{
printf("%c",(*T)->e);
printfT(&((*T)->lchild));
printfT(&((*T)->rchild));
}
}
//计算结点
int countNT(BiTree *T,int n){
static i=0;
if(*T){
if(!((*T)->lchild)&&!((*T)->rchild)){
i++;
}
countNT(&((*T)->lchild),i);
countNT(&((*T)->rchild),i);
}
n=i;
return n;
}
//求深度
int depT(BiTree *T){
int i=0,j=0;
int dep;
if(!*T){
dep=0;
}else{
i=depT(&((*T)->lchild));
j=depT(&((*T)->rchild));
}
dep=(i>j?i:j)+1;
return dep;
}
int main(int argc, char *argv[])
{
BiTree *T;
int i,n=0;
printf("please input elements:");
creatT(&T);
printfT(&T);
i=countNT(&T,n);
printf("\nnode is: %d",i);
i=depT(&T);
printf("\ndep is: %d",i);
return 0;
}
深度算出来总是不对,比如:输入ab##c## (#表示空),结果输出的是3,应该是2才对呀。。
另外,编译时总是出现:[Warning] H:\main.c:70: warning: passing arg 1 of `depT' from incompatible pointer type
不止一句,所有函数出现的地方都出现了。。请教到底是什么原因啊。。