二叉树的问题,调试出现Access Violation,为什么?求解答。

LLTT112299 2012-04-10 09:36:22
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define OVERFLOW -2

typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BTree;

BTree CreateBTree(BTree &T){
char a;
scanf("%c",&a);
if(a =='#')
T=NULL;
else{
T=(BiTNode *)malloc(sizeof(BiTNode));
if(!T){
exit(OVERFLOW);
T->data=a;
CreateBTree(T->lchild);
CreateBTree(T->rchild);
}
}

return T;
}

int GetBTreeDepth(BTree &T) //求二叉树的深度
{
if(T==NULL)
return 0;
else
{ int d1 = GetBTreeDepth(T->lchild );
int d2 = GetBTreeDepth(T->rchild );
if(d1>=d2)return d1+1;
else return d2+1;
}


}
int LeafCount(BTree &T)//求二叉树中叶子结点的数目
{
if(!T) return 0;
else if(!T->lchild&&!T->rchild) return 1;
else return LeafCount(T->lchild)+LeafCount(T->rchild);
}
/*
void PreOrderTraverse(BTree T, char (*Visit)(char e))
{
if(T)
{
Visit(T->data);
PreOrderTraverse(T->lchild,Visit);
PreOrderTraverse(T->rchild,Visit);
}
}
char Visit(char e)
{
printf("%c",e);
return 1;
}

*/
void main()
{
BTree T = NULL;
printf("请输入二叉数的结点序列:\n");
T = CreateBTree(T);
// PreOrderTraverse(T,Visit);
printf("二叉树的深度为:%d\n",GetBTreeDepth(T));
printf("二叉树节点数为:%d\n",LeafCount(T));
}

...全文
67 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Coder_Y_Jao 2012-04-10
  • 打赏
  • 举报
回复
你这个地方貌似应该是这样的吧

if(!T)
{
exit(OVERFLOW);
}
else
{
T->data=a;
CreateBTree(T->lchild);
CreateBTree(T->rchild);
}
W170532934 2012-04-10
  • 打赏
  • 举报
回复

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧