编程出了一些问题,求怎么改能够显示叶子节点数和深度

[复制链接]
查看11 | 回复2 | 2021-1-27 06:45:36 | 显示全部楼层 |阅读模式
#include
#include
#defineOK1
#defineERROR0
typedefcharElem;
typedefenumPointerTag{Link,Thread};//Link==0:指针,Thread==1:线索
typedefstructNode{
Elemdata;
structNode*pLchild,*pRchild;
PointerTagLTag,RTag;
}BTreeNode,*BTree;

BTreeCreateBTree(BTreeT)//创建二叉树
{
Elemx;
scanf("%c",&x);
if('0'==x)
{
T=NULL;
}
else
{
T=(BTree)malloc(sizeof(BTreeNode));
T->data=x;
T->pLchild=CreateBTree(T->pLchild);
T->pRchild=CreateBTree(T->pRchild);
}
returnT;
}
voidPostTraverseBTree(BTreeT)//后序
{
if(NULL!=T)
{
PostTraverseBTree(T->pLchild);
PostTraverseBTree(T->pRchild);
printf("%c",T->data);
}
}
voidInTraverseBTree(BTreeT)//中序
{
if(NULL!=T)
{
InTraverseBTree(T->pLchild);
printf("%c",T->data);
InTraverseBTree(T->pRchild);
}
}
voidPreTraverseBTree(BTreeT)//前序
{
if(NULL!=T)
{
printf("%c",T->data);
PreTraverseBTree(T->pLchild);
PreTraverseBTree(T->pRchild);
}
}
intCountLeaf(BTreeT)//叶子节点数
{
if(T==NULL)
return0;
elseif(T->pLchild==NULL&&T->pRchild==NULL)
return1;
else
returnCountLeaf(T->pLchild)+CountLeaf(T->pRchild);
}
intDepth(BTreeT)//深度
{
intdepthval;
if(!T)
return0;
intdepthLeft=Depth(T->pLchild);
intdepthRight=Depth(T->pRchild);
depthval=1+max(depthLeft,depthRight);
returndepthval;
}
intmain(void)
{
BTreeT=NULL;printf("请输入二叉树元素:\n");
T=CreateBTree(T);
printf("\n\n");
printf("先序遍历:\n");
PreTraverseBTree(T);
printf("\n\n");
printf("中序遍历:\n");
InTraverseBTree(T);
printf("\n\n");
printf("后序遍历:\n");
PostTraverseBTree(T);
printf("\n\n");
printf("叶子节点数:\n");
CountLeaf(T);
printf("\n\n");
printf("深度:\n");
Depth(T);
printf("\n\n");
return0;
}
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:45:36 | 显示全部楼层
什么问题,我看你代码没有打印叶子结点数改成print("%d\n",CountLeaf
回复

使用道具 举报

千问 | 2021-1-27 06:45:36 | 显示全部楼层
没有输出语句,当然不会显示啦
intnum=0;
num=CountLeaf(T);
,print("%d\n",num);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行