叶子结点:没有任何子结点;
#include <stdio.h>
#include <stdlib.h>
typedef struct BINARYNODE
{
char ch;
struct BINARYNODE* lChild;
struct BINARYNODE* rChild;
}BinaryNode;
void recursion(BinaryNode* root ,int* num)
{
BinaryNode* recursionNode = root;
if (root == NULL)
{
return;
}
if (recursionNode->lChild == NULL && recursionNode->rChild == NULL)
{
*num +=1;
printf("%c", recursionNode->ch);
}
//printf("%c", recursionNode->ch);//先序
if (recursionNode->lChild != NULL)
{
recursion(recursionNode->lChild,num);
}
if (recursionNode->rChild != NULL)
{
recursion(recursionNode->rChild,num);
}
}
int main()
{
//创建结点;
BinaryNode nodeA = { 'A', NULL, NULL };
BinaryNode nodeB = { 'B', NULL, NULL };
BinaryNode nodeC = { 'C', NULL, NULL };
BinaryNode nodeD = { 'D', NULL, NULL };
BinaryNode nodeE = { 'E', NULL, NULL };
BinaryNode nodeF = { 'F', NULL, NULL };
BinaryNode nodeG = { 'G', NULL, NULL };
BinaryNode nodeH = { 'H', NULL, NULL };
//创建树;
nodeA.lChild = &nodeB;
nodeA.rChild = &nodeF;
nodeB.lChild = NULL;
nodeB.rChild = &nodeC;
nodeC.lChild = &nodeD;
nodeC.rChild = &nodeE;
nodeF.lChild = NULL;
nodeF.rChild = &nodeG;
nodeG.lChild = &nodeH;
nodeG.rChild = NULL;
int a = 0;
recursion(&nodeA,&a);
printf("\n%d\n", a);
system("pause");
return 0;
}