sandubuhan 2019-12-09 14:42 采纳率: 25%
浏览 184
已采纳

二叉树深度算法查错求助

老师布置的作业,先创建,然后求深度,我写完之后,怎么都查不出错,希望大神帮忙看下。
创建是没错的,在求深度的时候无法得到返回值,不明白为什么

#include "stdio.h"
#include "stdlib.h"
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define NULL 0
typedef char TElemType; 
typedef int Status;
typedef struct BiTNode { // 结点结构
TElemType   data;
struct BiTNode  *lchild, *rchild;   // 左右孩子指针
} BiTNode, *BiTree;
//以下是建立二叉树存储结构 
Status CreateBiTree(BiTree &T) {
char ch; 
scanf("%c",&ch);
if (ch=='#')    T = NULL;
else {
//请在此填写代码,将该算法补充完整,参见书本和课件相关章节
    T = (BiTree)malloc(sizeof(BiTNode));
    if(!T){
        exit(OVERFLOW);
    }
    T->data = ch;

    CreateBiTree(T->lchild);
    CreateBiTree(T->rchild);
}
return OK;
} // CreateBiTree


 int BiTreeDeep(BiTree T) {
    if(T->lchild ==NULL&& T->rchild == NULL)
        return 1;
    if(T == NULL)
        return 0;
    if(T){
        int LTreedeep = BiTreeDeep(T->lchild);
        int RTreedeep = BiTreeDeep(T->rchild);

        return (LTreedeep > RTreedeep ? LTreedeep : RTreedeep)+1;
    }
}

int main()
{ 
    int i = 0 ; 
    BiTree T;
//int s=0,m=0,n=0,d=0; 
    T=NULL;
    printf("\n 请按先序次序输入各结点的值,以#表示空树:\n");
    CreateBiTree(T);
    printf("二叉树已建立完毕!\n");

    i = BiTreeDeep(T);
    printf("二叉树深度:%d",i);

}
  • 写回答

1条回答 默认 最新

  • QiQaWgYu 2019-12-09 15:28
    关注
    int BiTreeDeep(BiTree T) {
        if (T) {
            if (T->lchild == NULL && T->rchild == NULL)
                return 1;
            int LTreedeep = BiTreeDeep(T->lchild);
            int RTreedeep = BiTreeDeep(T->rchild);
            return (LTreedeep > RTreedeep ? LTreedeep : RTreedeep) + 1;
        }
        else
            return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?