二叉樹的C++實現
阿新 • • 發佈:2018-12-22
筆者在程式碼中遇到的問題
在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;
}