#include
#include
#include
using namespace std;
typedef struct BiTNode{
char data;
struct BiTNode* lchild;
struct BiTNode* rchild;//左右子树指针
}BiTNode;
//创建二叉树
void CreateBiTree(BiTNode*& pRoot) {
int ch=_getch();
if(ch==' ')
pRoot=NULL;
else {
cout << (char)ch << endl;
pRoot=(BiTNode*)malloc( sizeof(BiTNode));
pRoot->data=ch;
pRoot->lchild = NULL;
pRoot->rchild = NULL;
CreateBiTree(pRoot->lchild);
CreateBiTree(pRoot->rchild);
}
}
void InOrderTraverse(BiTNode* pRoot)
{
if(pRoot){
InOrderTraverse(pRoot->lchild);
cout << pRoot->data << endl;
InOrderTraverse(pRoot->rchild);
}
}
void main(){
BiTNode* root = NULL;
cout << "请按先序正确输入二叉树(空格为空树):" << endl;
CreateBiTree(root);
cout << "二叉树中序遍历:" << endl;
InOrderTraverse(root);
}
首先是递归的问题,你那样子设计是个死循环
然后是你对指针的理解的问题,再好好看看书尝试理解一下吧。
代码很别扭