为什么这个C语言程序执行不出结果?
#include<stdio.h>#include<stdlib.h>typedefstructBiTree{intval;/*这里的val相当于结点的值data*/st...
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTree
{
int val; /*这里的val相当于结点的值data*/
struct BiTree *lchild,*rchild;
}BiNode,*BiTree;
void CreateBiTree(BiTree *T)
{
char ch;
scanf("%c",&ch);
if(ch==' ')
{
*T=NULL;
}
else
{
*T=(BiTree)malloc(sizeof(BiNode));
if(!*T)
{
exit(0);
}
(*T)->val=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
depth=0;
h=1;
void TreeDepth(BiTree T,int h)
{
if(T)
{
if(h>depth)
{
depth=h;
TreeDepth(T->lchild,h+1);
TreeDepth(T->rchild,h+1);
}
}
}
void DispBiTree(BiTree T)
{
if(T)
{
printf("%c",T->val);
if(T->lchild!=NULL||T->rchild!=NULL)
{
DispBiTree(T->lchild);
if(T->rchild!=NULL)
{
DispBiTree(T->rchild);
}
}
}
}
int main()
{
BiTree T;
CreateBiTree(&T);
TreeDepth(T,h);
DispBiTree(T);
system("pause");
return 0;
} 展开
#include<stdlib.h>
typedef struct BiTree
{
int val; /*这里的val相当于结点的值data*/
struct BiTree *lchild,*rchild;
}BiNode,*BiTree;
void CreateBiTree(BiTree *T)
{
char ch;
scanf("%c",&ch);
if(ch==' ')
{
*T=NULL;
}
else
{
*T=(BiTree)malloc(sizeof(BiNode));
if(!*T)
{
exit(0);
}
(*T)->val=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
depth=0;
h=1;
void TreeDepth(BiTree T,int h)
{
if(T)
{
if(h>depth)
{
depth=h;
TreeDepth(T->lchild,h+1);
TreeDepth(T->rchild,h+1);
}
}
}
void DispBiTree(BiTree T)
{
if(T)
{
printf("%c",T->val);
if(T->lchild!=NULL||T->rchild!=NULL)
{
DispBiTree(T->lchild);
if(T->rchild!=NULL)
{
DispBiTree(T->rchild);
}
}
}
}
int main()
{
BiTree T;
CreateBiTree(&T);
TreeDepth(T,h);
DispBiTree(T);
system("pause");
return 0;
} 展开
1个回答
展开全部
先把这个程序中明显的两个错误的地方修改了吧?程序中没有声明深度和h两个变量,但是却把对他们的赋值写在了所有函数的外边。如做为作为全局变量声明的话,也只是声明在函数的外边,但是对变量的赋值,应该是在主函数内部。还有球深度的这个函数,并没有返回值,这是不起作用的。
追答
先把这个程序中明显的两个错误的地方修改了吧?程序中没有声明深度和h两个变量,但是却把对他们的赋值写在了所有函数的外边。如做为作为全局变量声明的话,也只是声明在函数的外边,但是对变量的赋值,应该是在主函数内部。还有球深度的这个函数,并没有返回值,这是不起作用的。
追问
好的没问题了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询