c++代码树检测叶子结点

代码如下,求哪位大佬解释下为啥求出的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;