#include<stdio.h>
#include<stdlib.h>
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
char ch;
int CreatBiTree(BiTree *T)
{
scanf("%c",&ch);
if(ch==' ') T=NULL;
else
{ if(!(T=(BiTree*)malloc(sizeof(BiTree)))) return 0;
(*T)->data=ch;
CreatBiTree(&((*T)->lchild));
CreatBiTree(&((*T)->rchild));
}
return 1;
}
void PreOrder(BiTree T)
{
if(T!=NULL)
{
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void CountLeaf(BiTree T, int *count)
{
if(T!=NULL)
{ if((!T->lchild) && (!T->rchild)) count++;
CountLeaf(T->lchild,count);
CountLeaf(T->rchild,count);
}
}
int TreeDepth(BiTree T)
{
int depth,depthLeft,depthRight;
if(!T) depth=0;
else
{ depthLeft=TreeDepth(T->lchild);
depthRight=TreeDepth(T->rchild);
depth=1+(depthLeft>depthRight?depthLeft:depthRight);
}
return depth;
}
void main()
{
BiTree T;
int count,depth;
int k;
printf("以前序遍历的形式输入二叉树:\n");
CreatBiTree(&T);
printf("执行1前序遍历,2求叶子节点个数,3求深度\n");
scanf("%d",&k);
switch(k)
{
case 1: printf("前序遍历二叉树:\n");
PreOrder(T); break;
case 2: CountLeaf(T, &count); break;
case 3: depth=TreeDepth(T);
}
}
我的程序怎么不可以啊?要实现二叉树的链式存储,创建,前序遍历,求叶子节点数,求深度
答案:1 悬赏:0 手机版
解决时间 2021-04-23 09:39
- 提问者网友:却不属于对方
- 2021-04-22 13:34
最佳答案
- 五星知识达人网友:山有枢
- 2021-04-22 15:09
请问是哪儿错了,编译不通过还是什么?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯