标题:二叉树深度及编译报警问题
只看楼主
Nekomimi
Rank: 2
等 级:论坛游民
帖 子:80
专家分:15
注 册:2006-11-21
结帖率:100%
 问题点数:0 回复次数:0 
二叉树深度及编译报警问题
#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
不止一句,所有函数出现的地方都出现了。。请教到底是什么原因啊。。
搜索更多相关主题的帖子: 编译 报警 深度 二叉树 
2010-01-21 23:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-296201-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.419138 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved