在思考着问题,可能不知道怎么下手,可以把问题化小处理,比如可以求它上一层的左子数的结点和右子树的结点的个数,依次向上推,从而可以写代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef int BTDataType;
typedef struct BinaryTreeNode//创建一个链式结构体
{
BTDataType data;
struct BinaryTreeNode* left;
struct BinaryTreeNode* right;
}BTNode;
BTNode*BuyNode(BTDataType x)//创建一个新的结点
{
BTNode*newnode = (BTNode*)malloc(sizeof(BTNode));
if (newnode == NULL)
{
printf("malloc fail\n");
exit(-1);
}
newnode->data = x;
newnode->left = NULL;
newnode->right = NULL;
return newnode;
}
BTNode* CreatBinaryTree()//手动创建一个链式结构的二叉树,
{
BTNode* node1 = BuyNode(1);
BTNode* node2 = BuyNode(2);
BTNode* node3 = BuyNode(3);
BTNode* node4 = BuyNode(4);
BTNode* node5 = BuyNode(5);
BTNode* node6 = BuyNode(6);
node1->left = node2;
node1->right = node4;
node2->left = node3;
node4->left = node5;
node4->right = node6;
return node1;
}
创建好一个链式二叉树
int BinaryTreeLeafSize(BTNode*root)
{
if (root == NULL)
{
return 0;
}
if (root->left == root->right)
{
return 1;
}
return BinaryTreeLeafSize(root->left) + BinaryTreeLeafSize(root->right);
由此就结束