二叉树递归中,将递增的静态变量最后变回零,怎么做?

//按照前序遍历序列建立二叉树
void CreateBTree_Pre(BTNode *&root, DataType Array[])
{
static int count=0; //静态变量count
char item=Array[count];//读取Array[]数组中的第count个元素
count++;
if(item == '#') //如果读入#字符,创建空树
{ root = NULL; return ;}
else
{
root = new BTNode;
root->data = item;
CreateBTree_Pre (root->lchild,Array); //建左子树
CreateBTree_Pre (root->rchild,Array); //建右子树
}
}
我发现一个问题,这个建立二叉树,只能在main函数中建立一次,执行了一次CreateBTree_Pre函数后,count的值就非零了。我要让这函数执行完后count变回零,怎么写?
我把count=0放在else块的最后,经测试不行,把count--放在函数最后,经测试也不
行。这个在递归中将递增的静态变量最后变回零,怎么做啊?越想越乱了......

这个简单啊,你在CreateBTree_Pre的最后加一句count=0;就行了,这样每次运行完都是0

我找到办法了,把二叉树的图画出来就会发现,当count的值为Array数组的长度时,
在之后count的值就不会再用到,此时可把count的值赋为0

 //按照前序遍历序列建立二叉树
void CreateBTree_Pre(BTNode  *&root, DataType Array[]) 
{ 
    int i;
    for (i = 0; Array[i] != '\0'; i++);//取得Array数组的长度
    static int count=0; //静态变量count
    char item=Array[count];//读取Array[]数组中的第count个元素
    count++;//最终值为Array数组长度
    if(item == '#') //如果读入#字符,创建空树
    { root = NULL; return ;}
    else
    {
        root = new BTNode;
        root->data = item;
        CreateBTree_Pre (root->lchild,Array);    //建左子树 
        CreateBTree_Pre (root->rchild,Array); //建右子树
        if (count == i)
            count = 0;
    }
}