建立二叉树的函数建不出来,找人帮忙看看问题在哪

 #include<iostream>
using namespace std;

struct BinTreeNode{
    char data;
    BinTreeNode *leftChild, *rightChild;
    BinTreeNode(){leftChild = NULL; rightChild = NULL; }
    BinTreeNode(char x, BinTreeNode *l, BinTreeNode *r){ data = x; leftChild = l; rightChild = r; }
};

class BinaryTree{
protected:
    BinTreeNode *root;
public:
    BinTreeNode* CreateBinTree(char valueArray[], BinTreeNode *subTree);
    void preOrder(BinTreeNode *root);
    void preOrderNonrecursion(BinTreeNode *root);
    void inOrder(BinTreeNode *root);
    void inOrderNonrecursion(BinTreeNode *root);
    void postOrder(BinTreeNode *root);
    void postOrderNonrecursion(BinTreeNode *root);
    void getHeight(BinaryTree *root);
    BinTreeNode* getRoot(){ return root;}
    int treeSize(BinTreeNode *root);
};

BinTreeNode* BinaryTree::CreateBinTree(char valueArray[],BinTreeNode *subTree){
    static int num = -1;
    BinTreeNode *p = new BinTreeNode();
    if (num < sizeof(valueArray))
    {
        p->data = valueArray[++num];
        CreateBinTree(valueArray,p->leftChild);
        CreateBinTree(valueArray,p->rightChild);
    }
    return p;
}

void BinaryTree::preOrder(BinTreeNode *p){
    if (p != NULL){
        cout << p->data;
        preOrder(p->leftChild);
        preOrder(p->rightChild);
    }
}

int main(){
    char valueArray[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    BinaryTree a;
    a.preOrder(a.CreateBinTree(valueArray,a.getRoot()));
    return 0;
}

就运行以后什么东西都没有出来,直接提示“按任意键结束”
前序遍历输出的函数是书上的,不可能错,如果正常运行应该会有输出的
所以建二叉树的函数有问题,但我感觉逻辑上没什么问题呀,请大神帮忙指点迷津

1、获取数组长度不对
2、建立树的时候,因为是root是指针参数传递,所以要用双重指针
3、CreateBinTree函数既然返回P 却没有承接对象

#include
using namespace std;

struct BinTreeNode{
int data;
BinTreeNode *leftChild, *rightChild;
BinTreeNode(){leftChild = NULL; rightChild = NULL; }
BinTreeNode(char x, BinTreeNode *l, BinTreeNode *r){ data = x; leftChild = l; rightChild = r; }
};

class BinaryTree{
protected:
BinTreeNode root;
public:
void CreateBinTree(char valueArray[], BinTreeNode **subTree);
void preOrder(BinTreeNode *root);
void preOrderNonrecursion(BinTreeNode *root);
void inOrder(BinTreeNode *root);
void inOrderNonrecursion(BinTreeNode *root);
void postOrder(BinTreeNode *root);
void postOrderNonrecursion(BinTreeNode *root);
void getHeight(BinaryTree *root);
BinTreeNode
getRoot(){ return root;}
int treeSize(BinTreeNode *root);
};

void BinaryTree::CreateBinTree(char valueArray[],BinTreeNode **subTree){
static int num =0;

if (num < 10)
{   *subTree = new BinTreeNode();
    (*subTree)->data = valueArray[num];
    num++;
    CreateBinTree(valueArray,&((*subTree)->leftChild));
    CreateBinTree(valueArray,&((*subTree)->rightChild));
}
 //return *subTree;

}

void BinaryTree::preOrder(BinTreeNode *p){
if (p != NULL){
cout << p->data;
preOrder(p->leftChild);
preOrder(p->rightChild);
}
}

int main(){
char valueArray[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

BinaryTree a;
BinTreeNode * root = a.getRoot();
a.CreateBinTree(valueArray, &root);
a.preOrder(root);
getchar();
return 0;

}

https://zhidao.baidu.com/question/429463200.html

楼主参考这个吧
http://blog.csdn.net/xyzbaihaiping/article/details/51202719

http://blog.csdn.net/xyzbaihaiping/article/details/51202719

http://blog.csdn.net/xyzbaihaiping/article/details/51202719 来一发这个 看下

这种程序建议去网上找个源码先看看,不要一上来就自己写。

可以去参考一下严蔚敏的数据结构还是比较权威的