注册 登录
编程论坛 数据结构与算法

二叉树深度及编译报警问题

Nekomimi 发布于 2010-01-21 23:17, 578 次点击
#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
不止一句,所有函数出现的地方都出现了。。请教到底是什么原因啊。。
0 回复
1