-1
class Node {
private:
Node *left = NULL, *right = NULL;
char data;
public:
Node(char new_data) {
data = new_data;
}
Node *get_left() {
return left;
}
Node *get_right() {
return right;
}
char get_data() {
return data;
}
void set_data(char new_data) {
data = new_data;
}
};
私はデバッグしました(gdbとcoutを使用しています)、set_data関数が問題であるようです。どうして?これはセグメンテーションの理由がわかりません
もっと多くのコードがありますが、より多くのコードは必要ないと仮定しています。
EDIT:
class tree {
private:
Node *root;
public:
tree(char ch) {
cout << "ASDASD"; //using this to identify error
root->set_data(ch);
cout << root->get_data(); //using this to identify error
}
};
EDIT 2:
#include <iostream>
#include "tree.h"
#include <cctype>
using namespace std;
int main() {
char c;
cout << "Enter a series of letters: ";
cin >> c;
tree t(c); //sets first one to root
while(cin) { //change??
cin >> c;
if (isdigit(c)) break;
Node *n;
n->set_data(c);
t.insert(n);
}
}
コードは番号を読み取るまで、キーボードから読み取るようになっています。それはすべての文字を読みますが、終了しようとする数字を入力すると、それはセグメンテーションします。
あなたはツリーを歩いているときに 'NULL'ノードを監視します。 – xbug
私はヌルノードで何かをやっているのか分かりません。ツリークラスには、ルートノードを設定するためにset_data()を使用するコンストラクタがあります。元の投稿をツリークラスの主要部分を含むように更新しました。これに何か問題はありますか? – Locrian7
'root'は' Node * 'のインスタンスにいつ設定されますか? – bmm6o