1.计算二叉树叶子节点的个数
typedef struct node
{
int data;
struct node* lchild, * rchild;
}BSTNode,*BiTree;
int get_leaf(BiTree T)
{
int n1, n2;
if (T == NULL) return 0;
if (T->lchild == NULL && T->rchild == NULL)
return 1;
n1 = get_leaf(T->lchild);
n2 = get_leaf(T->rchild);
return n1 + n2;
}
2.计算二叉树的双分支节点个数
int get_DoubledNode(BiTree T)
{
if (T == NULL) return 0;
else if (T->lchild && T->rchild)
return get_DoubledNode(T->lchild) + get_DoubledNode(T->rchild) + 1;
else
return get_DoubledNode(T->lchild) + get_DoubledNode(T->rchild);
}
3.计算二叉树的所有节点
int get_CountNode(BiTree T)
{
int n1, n2;
if (!T) return 0;
else
{
n1 = get_leaf(T->lchild);
n2 = get_leaf(T->rchild);
return n1 + n2 + 1;
}