#include <stdio.h> typedef struct BiTNode { char data; struct BiTNode* rchild; struct BiTNode* lchild; }BiTNode; //计算树的深度 int TreeDepth(BiTNode *root) { int right=0; int left=0; int deep=0; if(root==NULL) { return deep; } right=TreeDepth(root->rchild);//计算左子树的深度 left=TreeDepth(root->lchild);//计算右子树的深度 deep=right>left?right:left; deep++; return deep; } //计算树的叶子树 int TreeLeaf(BiTNode *root)//这里也可将叶子数传出.int TreeLeaf(BiTNode *root,int *num) { static int num=0; if(root==NULL) { return num; } if(root->lchild==NULL&&root->rchild==NULL) { num++; } TreeLeaf(root->lchild); TreeLeaf(root->rchild); return num; } int main() { int deep=0; int num=0; BiTNode root={'O',NULL,NULL}; BiTNode a={'A',NULL,NULL}; BiTNode b={'B',NULL,NULL}; BiTNode c={'C',NULL,NULL}; BiTNode d={'D',NULL,NULL}; BiTNode e={'E',NULL,NULL}; root.lchild=&a; root.rchild=&b; a.lchild=&c; a.rchild=&d; d.rchild=&e; deep=TreeDepth(&root); printf("树的深度:%d ",deep); num=TreeLeaf(&root); printf("树的叶子数:%d ",num); }