数据结构二叉树程序问题

2025-04-13 20:55:28
推荐回答(2个)
回答1:

求二叉树叶子结点
int
LeafCount(BitTree
T)
if(!T)
//不存在节点,返回0
return
0;
else
if(!T->lchild&&!T->rchild)//存在节点,但是没有子节点。是叶子节点或者只有1个根节点,返回1。说明找到1个叶子节点
return
1;
else
//存在节点,但是含有子节点。那就不是叶子,继续查看这个节点的左节点和右节点。递归调用此函数,直到找到叶子节点
return
LeafCount(T->lchild)+LeafCount(T->rchild);
函数的返回值就是叶子节点的个数。

NotLeafCount
if(!T)//同理
return
0;
else
if(!T->lchild&&!T->rchild)//叶子节点,返回0
return
0;
else
//如果这个节点含有子节点,那么就是非叶子节点,继续查看这个节点的左节点和右节点,返回的时候加上1,再递归调用此函数。
return
NotLeafCount(T->lchild)+NotLeafCount(T->rchild)+1;

回答2:

叶子结点:
用到递归。
先判断树是否存在。如果不存在。那就返回报错。
再判断左右子树是否存在,如果不存在,那表示程序结束。
如果左右子树用递归的方式,统计出左右子树。
每次如果存在返回1,在返回的N个1中这样加上去。

同理算出非叶子结点