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