代码如下,求哪位大佬解释下为啥求出的sum值是10呢?按道理应该是3啊,哪里错了,求哪位大佬帮我改下
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct BiTNode
{
char data;
struct BiTNode *lchild, *rchild;
}BiTree;
void CreateTree(BiTree *node)
{
node[0].data = 'A';
node[0].lchild = &node[1];
node[0].rchild = &node[2];
node[1].data = 'B';
node[1].lchild = &node[3];
node[1].rchild = &node[4];
node[2].data = 'C';
node[2].lchild = NULL;
node[2].rchild = NULL;
node[3].data = 'D';
node[3].lchild = NULL;
node[3].rchild = NULL;
node[4].data = 'E';
node[4].lchild = NULL;
node[4].rchild = NULL;
}
void PreCircle(BiTree *node)
{
if (node != NULL)
{
PreCircle((*node).lchild);
printf("%c", (*node).data);
PreCircle((*node).rchild);
}
}
int sum=0;
int CountTree(BiTree *node)
{
if (node != NULL)
{
if ((*node).lchild == NULL && (*node).rchild == NULL)
{
sum++;
}
if (CountTree((*node).lchild) != NULL)
{
CountTree((*node).lchild);
}
if (CountTree((*node).rchild) != NULL)
{
CountTree((*node).rchild);
}
}
}
void main()
{
BiTree node[5];
CreateTree(node);
CountTree(node);
printf("%d", sum);
printf("\n");
system("pause");
}
代码没毛病 确实是3
int CountTree(BiTree *node)
最后你是不是return sum;
改return 0;