#include <stdio.h>
#include <stdlib.h>
#include "bitree.h"
int BiTreeDepth(BiTree T);//计算该二叉树的深度,返回深度值
int NodeCount(BiTree T);//计算该二叉树的总的节点个数,返回节点个数
int LeafNodeCount(BiTree T);//算该二叉树的叶子节点个数,返回叶子节点个数
int main()
{
BiTree T;
CreateBiTree(T);
printf("该树的高度为:%d\n",BiTreeDepth(T));
printf("节点的数目为: %d\n",NodeCount(T));
printf("叶子节点的数目为: %d\n",LeafNodeCount(T));
DestoryBiTree(T);
return 0;
}
int BiTreeDepth(BiTree T)
{ // 初始条件:二叉树T存在。操作结果:返回T的深度
/********** Begin **********/
int i,j;
if(!T)
return 0;
if(T->lchild)
i=BiTreeDepth(T->lchild);
else
i=0;
if(T->rchild)
j=BiTreeDepth(T->rchild);
else
j=0;
return i>j?i+1:j+1;
/********** End **********/
}
int NodeCount(BiTree T)
{
//初始条件:二叉树T存在。操作结果:返回T的结点数
/********** Begin **********/
if(!T)
return 0;
else
return NodeCount(T->lchild)+NodeCount(T->rchild)+1;
/********** End **********/
}
int LeafNodeCount(BiTree T)
{
//初始条件:二叉树T存在。操作结果:返回T的叶子结点数
/********** Begin **********/
if(!T)
return 0;
else {
if(!T->lchild && !T->rchild)
return 1;
else
return LeafNodeCount(T->lchild)+LeafNodeCount(T->rchild);
}
/********** End **********/
}