#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 **********/
}
posted on 2024-06-20 17:42  findscripter  阅读(56)  评论(0)    收藏  举报