二叉树-递归求叶子节点数

二叉树-递归求叶子节点数
  • 一共有3个叶子节点

代码

#include <stdio.h>
#include <string.h>



typedef struct BINARYNODE
{
	char ch;
	struct BINARYNODE* left;
	struct BINARYNODE* right;

}BinaryNode;


void CalculateLeaves(BinaryNode* root, int* num)
{
	if(root==NULL)
		return;
	if(root->left == NULL && root->right == NULL)
		(*num)++;
	CalculateLeaves(root->left, num);  //递归,传左孩子
	CalculateLeaves(root->right, num); 
}

int main(void)
{
    BinaryNode b1,b2,b3,b4,b5,b6,b7,b8;
	int num=0;

	b1.ch = 'A'; b1.left = &b2; b1.right = &b3;
	b2.ch = 'B'; b2.left = NULL;b2.right = &b4;
	b3.ch = 'F'; b3.left = NULL;b3.right = &b5;
	b4.ch = 'C'; b4.left = &b6; b4.right = &b7;
	b5.ch = 'G'; b5.left = &b8; b5.right = NULL;
	b6.ch = 'D'; b6.left = NULL; b6.right = NULL;
	b7.ch = 'E'; b7.left = NULL; b7.right = NULL;
	b8.ch = 'H'; b8.left = NULL; b8.right = NULL;

	
	CalculateLeaves(&b1, &num);
	printf("%d\n", num);

	return 0;
}

结果:3