笔者在代码中遇到的问题
在create函数中的这句话
_root = new BTNode;
这相当于在堆中分配了给_root分配了一片内存
如果没有这句话,会发生以下错误
废话不多说,直接上代码
#include<bits/stdc++.h>
using namespace std;
typedef struct BTNode{
char data;
struct BTNode *lchild, *rchild;
}BTNode;
class BTree {
public:
BTNode *root;
BTree() {
BTNode *_root = NULL;
root=create(_root);
}
void preorder(BTNode *p);
BTNode *create(BTNode *_root);
};
void BTree::preorder(BTNode *p) {
if (p != NULL) {
preorder(p->lchild);
cout << p->data;
preorder(p->rchild);
}
}
BTNode* BTree::create(BTNode * _root) {
char ch;
cin >> ch;
_root = new BTNode;
if (ch == '#')
return NULL;
_root->data = ch;
_root->lchild = create(_root);
_root->rchild = create(_root);
return _root;
}
int main(void) {
BTree a;
a.preorder(a.root);
return 0;
}