#include <stdio.h>
#include <stdlib.h>
typedef struct _BT_NODE
{
int data;
struct _BT_NODE* left;
struct _BT_NODE* right;
}BT_NODE;
BT_NODE* AppendNode(int data)
{
BT_NODE* node=(BT_NODE*)malloc(sizeof(BT_NODE));
node->left=NULL;
node->right=NULL;
node->data=data;
return node;
}
int BinTreeNodeCount(BT_NODE* root)
{
int nodeNum=1;
if(!root)return 0;
nodeNum+=BinTreeNodeCount(root->left);
nodeNum+=BinTreeNodeCount(root->right);
return nodeNum;
}
int BinTreeLeafNodeCount(BT_NODE* root)
{
int nodeNum=0;
if(!root)return 0;
if(root->left==NULL && root->left==NULL)
nodeNum++;
else
{
nodeNum+=BinTreeLeafNodeCount(root->left);
nodeNum+=BinTreeLeafNodeCount(root->right);
}
return nodeNum;
}
int main(void) {
BT_NODE* root;
/*
10
/\
20 30
15 16
*/
root=AppendNode(10);
root->left=AppendNode(20);
root->right=AppendNode(30);
root->left->left=AppendNode(15);
root->left->right=AppendNode(16);
printf("The binary tree has %d node(s).\n",BinTreeNodeCount(root));
printf("The binary tree has %d leaf node(s).\n",BinTreeLeafNodeCount(root));
return 0;
}