一道数据结构,二叉树的题目,求助!

题目为:
假设以二叉链表表示二叉树,类型定义如下:
typedef struct node {
int data;
struct node *lchild, *rchild //左右孩子指针
} +BinTree;
简述算法f的功能
int f(BinTree T)
{
int d;
if(!T) return 0;
d=f(T->lchild)+f(T->rchild);
if(T->lchild&&T->rchild) return d+1;
else return d;
}

PS: 初学,知道的朋友帮说下,有啥技巧详细说下,满意一定追加。

第1个回答  2010-12-28
这个程序是用来计算一棵树的叶子节点总数的
注意看这一句
if(T->lchild&&T->rchild) return d+1;
只有当左子树和右子树同时为空的情况下
也就是只有该节点为叶子节点的时候
计数器d才加1
相似回答
大家正在搜